15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/media_stream_request.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool IsAudioInputMediaType(MediaStreamType type) { 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return (type == MEDIA_DEVICE_AUDIO_CAPTURE || 13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) type == content::MEDIA_TAB_AUDIO_CAPTURE || 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) type == content::MEDIA_LOOPBACK_AUDIO_CAPTURE); 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool IsVideoMediaType(MediaStreamType type) { 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return (type == MEDIA_DEVICE_VIDEO_CAPTURE || 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) type == content::MEDIA_TAB_VIDEO_CAPTURE || 20ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch type == content::MEDIA_DESKTOP_VIDEO_CAPTURE); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)MediaStreamDevice::MediaStreamDevice() 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) : type(MEDIA_NO_SERVICE), 2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) video_facing(MEDIA_VIDEO_FACING_NONE) { 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MediaStreamDevice::MediaStreamDevice( 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaStreamType type, 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& id, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& name) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : type(type), 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) id(id), 3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) video_facing(MEDIA_VIDEO_FACING_NONE), 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) name(name) { 3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#if defined(OS_ANDROID) 3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (name.find("front") != std::string::npos) { 3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) video_facing = MEDIA_VIDEO_FACING_USER; 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } else if (name.find("back") != std::string::npos) { 4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) video_facing = MEDIA_VIDEO_FACING_ENVIRONMENT; 4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)MediaStreamDevice::MediaStreamDevice( 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaStreamType type, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& id, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& name, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sample_rate, 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int channel_layout, 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int frames_per_buffer) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : type(type), 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) id(id), 5468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) video_facing(MEDIA_VIDEO_FACING_NONE), 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) name(name), 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) input(sample_rate, channel_layout, frames_per_buffer) { 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MediaStreamDevice::~MediaStreamDevice() {} 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool MediaStreamDevice::IsEqual(const MediaStreamDevice& second) const { 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const AudioDeviceParameters& input_second = second.input; 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return type == second.type && 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) name == second.name && 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) id == second.id && 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) input.sample_rate == input_second.sample_rate && 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) input.channel_layout == input_second.channel_layout; 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 70010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)MediaStreamDevices::MediaStreamDevices() {} 71010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 72010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)MediaStreamDevices::MediaStreamDevices(size_t count, 73010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const MediaStreamDevice& value) 74010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) : std::vector<MediaStreamDevice>(count, value) { 75010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 76010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 77010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)const MediaStreamDevice* MediaStreamDevices::FindById( 78010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::string& device_id) const { 79010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) for (const_iterator iter = begin(); iter != end(); ++iter) { 80010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (iter->id == device_id) 81010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return &(*iter); 82010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 83010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return NULL; 84010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 85010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MediaStreamRequest::MediaStreamRequest( 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int render_process_id, 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int render_frame_id, 897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch int page_request_id, 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& security_origin, 91effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch bool user_gesture, 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaStreamRequestType request_type, 937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& requested_audio_device_id, 947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& requested_video_device_id, 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaStreamType audio_type, 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MediaStreamType video_type) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : render_process_id(render_process_id), 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch render_frame_id(render_frame_id), 997dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch page_request_id(page_request_id), 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) security_origin(security_origin), 101effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch user_gesture(user_gesture), 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) request_type(request_type), 1037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch requested_audio_device_id(requested_audio_device_id), 1047dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch requested_video_device_id(requested_video_device_id), 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) audio_type(audio_type), 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) video_type(video_type) { 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)MediaStreamRequest::~MediaStreamRequest() {} 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 112