1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // IPC messages for the media streaming. 6 // Multiply-included message file, hence no include guard. 7 8 #include <string> 9 10 #include "content/common/content_export.h" 11 #include "content/common/media/media_stream_options.h" 12 #include "ipc/ipc_message_macros.h" 13 #include "url/gurl.h" 14 15 #undef IPC_MESSAGE_EXPORT 16 #define IPC_MESSAGE_EXPORT CONTENT_EXPORT 17 #define IPC_MESSAGE_START MediaStreamMsgStart 18 19 IPC_ENUM_TRAITS_MAX_VALUE(content::MediaStreamType, 20 content::NUM_MEDIA_TYPES - 1) 21 22 IPC_ENUM_TRAITS_MAX_VALUE(content::VideoFacingMode, 23 content::NUM_MEDIA_VIDEO_FACING_MODE - 1) 24 25 IPC_STRUCT_TRAITS_BEGIN(content::StreamOptions::Constraint) 26 IPC_STRUCT_TRAITS_MEMBER(name) 27 IPC_STRUCT_TRAITS_MEMBER(value) 28 IPC_STRUCT_TRAITS_END() 29 30 IPC_STRUCT_TRAITS_BEGIN(content::StreamOptions) 31 IPC_STRUCT_TRAITS_MEMBER(audio_requested) 32 IPC_STRUCT_TRAITS_MEMBER(mandatory_audio) 33 IPC_STRUCT_TRAITS_MEMBER(optional_audio) 34 IPC_STRUCT_TRAITS_MEMBER(video_requested) 35 IPC_STRUCT_TRAITS_MEMBER(mandatory_video) 36 IPC_STRUCT_TRAITS_MEMBER(optional_video) 37 IPC_STRUCT_TRAITS_END() 38 39 IPC_STRUCT_TRAITS_BEGIN(content::StreamDeviceInfo) 40 IPC_STRUCT_TRAITS_MEMBER(device.type) 41 IPC_STRUCT_TRAITS_MEMBER(device.name) 42 IPC_STRUCT_TRAITS_MEMBER(device.id) 43 IPC_STRUCT_TRAITS_MEMBER(device.video_facing) 44 IPC_STRUCT_TRAITS_MEMBER(device.matched_output_device_id) 45 IPC_STRUCT_TRAITS_MEMBER(device.input.sample_rate) 46 IPC_STRUCT_TRAITS_MEMBER(device.input.channel_layout) 47 IPC_STRUCT_TRAITS_MEMBER(device.input.frames_per_buffer) 48 IPC_STRUCT_TRAITS_MEMBER(device.input.effects) 49 IPC_STRUCT_TRAITS_MEMBER(device.matched_output.sample_rate) 50 IPC_STRUCT_TRAITS_MEMBER(device.matched_output.channel_layout) 51 IPC_STRUCT_TRAITS_MEMBER(device.matched_output.frames_per_buffer) 52 IPC_STRUCT_TRAITS_MEMBER(session_id) 53 IPC_STRUCT_TRAITS_END() 54 55 // Message sent from the browser to the renderer 56 57 // The browser has generated a stream successfully. 58 IPC_MESSAGE_ROUTED4(MediaStreamMsg_StreamGenerated, 59 int /* request id */, 60 std::string /* label */, 61 content::StreamDeviceInfoArray /* audio_device_list */, 62 content::StreamDeviceInfoArray /* video_device_list */) 63 64 // The browser has failed to generate a stream. 65 IPC_MESSAGE_ROUTED1(MediaStreamMsg_StreamGenerationFailed, 66 int /* request id */) 67 68 // The browser reports that a media device has been stopped. Stopping was 69 // triggered from the browser process. 70 IPC_MESSAGE_ROUTED2(MediaStreamMsg_DeviceStopped, 71 std::string /* label */, 72 content::StreamDeviceInfo /* the device */) 73 74 // The browser has enumerated devices. If no devices are found 75 // |device_list| is empty. 76 // Used by Pepper. 77 // TODO(vrk,wjia): Move this to pepper code. 78 IPC_MESSAGE_ROUTED2(MediaStreamMsg_DevicesEnumerated, 79 int /* request id */, 80 content::StreamDeviceInfoArray /* device_list */) 81 82 // TODO(wjia): should DeviceOpen* messages be merged with 83 // StreamGenerat* ones? 84 // The browser has opened a device successfully. 85 IPC_MESSAGE_ROUTED3(MediaStreamMsg_DeviceOpened, 86 int /* request id */, 87 std::string /* label */, 88 content::StreamDeviceInfo /* the device */) 89 90 // The browser has failed to open a device. 91 IPC_MESSAGE_ROUTED1(MediaStreamMsg_DeviceOpenFailed, 92 int /* request id */) 93 94 // Response to enumerate devices request. 95 IPC_MESSAGE_CONTROL2(MediaStreamMsg_GetSourcesACK, 96 int /* request id */, 97 content::StreamDeviceInfoArray /* device_list */) 98 99 // Messages sent from the renderer to the browser. 100 101 // Request a new media stream. 102 IPC_MESSAGE_CONTROL4(MediaStreamHostMsg_GenerateStream, 103 int /* render view id */, 104 int /* request id */, 105 content::StreamOptions /* components */, 106 GURL /* security origin */) 107 108 // Request to cancel the request for a new media stream. 109 IPC_MESSAGE_CONTROL2(MediaStreamHostMsg_CancelGenerateStream, 110 int /* render view id */, 111 int /* request id */) 112 113 // Request to close a device that has been opened by GenerateStream. 114 IPC_MESSAGE_CONTROL2(MediaStreamHostMsg_StopStreamDevice, 115 int /* render view id */, 116 std::string /*device_id*/) 117 118 // Request to enumerate devices. 119 IPC_MESSAGE_CONTROL2(MediaStreamHostMsg_GetSources, 120 int /* request id */, 121 GURL /* origin */) 122 123 124 // Request to enumerate devices. 125 // Used by Pepper. 126 // TODO(vrk,wjia): Move this to pepper code. 127 IPC_MESSAGE_CONTROL4(MediaStreamHostMsg_EnumerateDevices, 128 int /* render view id */, 129 int /* request id */, 130 content::MediaStreamType /* type */, 131 GURL /* security origin */) 132 133 // Request to stop enumerating devices. 134 IPC_MESSAGE_CONTROL2(MediaStreamHostMsg_CancelEnumerateDevices, 135 int /* render view id */, 136 int /* request id */) 137 138 // Request to open the device. 139 IPC_MESSAGE_CONTROL5(MediaStreamHostMsg_OpenDevice, 140 int /* render view id */, 141 int /* request id */, 142 std::string /* device_id */, 143 content::MediaStreamType /* type */, 144 GURL /* security origin */) 145 146 // Request to close a device. 147 IPC_MESSAGE_CONTROL2(MediaStreamHostMsg_CloseDevice, 148 int /* render view id */, 149 std::string /*label*/) 150