| Index: content/renderer/media/media_stream_impl.cc
|
| ===================================================================
|
| --- content/renderer/media/media_stream_impl.cc (revision 109718)
|
| +++ content/renderer/media/media_stream_impl.cc (working copy)
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/string_util.h"
|
| #include "content/renderer/media/capture_video_decoder.h"
|
| +#include "content/renderer/media/media_stream_dispatcher.h"
|
| #include "content/renderer/media/video_capture_impl_manager.h"
|
| #include "googleurl/src/gurl.h"
|
| #include "media/base/message_loop_factory.h"
|
| @@ -22,18 +23,32 @@
|
| // TODO(wjia): remove this string when full media stream code is checked in.
|
| static const char kRawMediaScheme[] = "mediastream";
|
|
|
| +static int desired_device_index = 0;
|
| +static int next_request_id = 1;
|
| +
|
| } // namespace
|
|
|
| -MediaStreamImpl::MediaStreamImpl(VideoCaptureImplManager* vc_manager)
|
| - : vc_manager_(vc_manager) {
|
| +MediaStreamImpl::MediaStreamImpl(
|
| + MediaStreamDispatcher* media_stream_dispatcher,
|
| + VideoCaptureImplManager* vc_manager)
|
| + : media_stream_dispatcher_(media_stream_dispatcher),
|
| + vc_manager_(vc_manager) {
|
| }
|
|
|
| MediaStreamImpl::~MediaStreamImpl() {}
|
|
|
| +void MediaStreamImpl::GetVideoDevice(int index) {
|
| + desired_device_index = index;
|
| + media_stream_dispatcher_->EnumerateVideoDevices(next_request_id++, this, "");
|
| +}
|
| +
|
| scoped_refptr<media::VideoDecoder> MediaStreamImpl::GetVideoDecoder(
|
| const GURL& url, media::MessageLoopFactory* message_loop_factory) {
|
| bool raw_media = (url.spec().find(kRawMediaScheme) == 0);
|
| media::VideoDecoder* decoder = NULL;
|
| + int session_id = media_stream_dispatcher_->video_session_id(local_label_, 0);
|
| + if (session_id == media_stream::StreamDeviceInfo::kNoId)
|
| + session_id = kStartOpenSessionId;
|
| if (raw_media) {
|
| media::VideoCapture::VideoCaptureCapability capability;
|
| capability.width = kVideoCaptureWidth;
|
| @@ -45,7 +60,74 @@
|
|
|
| decoder = new CaptureVideoDecoder(
|
| message_loop_factory->GetMessageLoopProxy("CaptureVideoDecoder").get(),
|
| - kStartOpenSessionId, vc_manager_.get(), capability);
|
| + session_id, vc_manager_.get(), capability);
|
| }
|
| return decoder;
|
| }
|
| +
|
| +void MediaStreamImpl::OnStreamGenerated(
|
| + int request_id,
|
| + const std::string& label,
|
| + const media_stream::StreamDeviceInfoArray& audio_array,
|
| + const media_stream::StreamDeviceInfoArray& video_array) {
|
| + DVLOG(1) << "MediaStreamImpl::OnStreamGenerated("
|
| + << request_id << ", " << label << ")";
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void MediaStreamImpl::OnStreamGenerationFailed(int request_id) {
|
| + DVLOG(1) << "MediaStreamImpl::OnStreamGenerationFailed("
|
| + << request_id << ")";
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void MediaStreamImpl::OnVideoDeviceFailed(const std::string& label,
|
| + int index) {
|
| + DVLOG(1) << "MediaStreamImpl::OnVideoDeviceFailed("
|
| + << label << ", " << index << ")";
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void MediaStreamImpl::OnAudioDeviceFailed(const std::string& label,
|
| + int index) {
|
| + DVLOG(1) << "MediaStreamImpl::OnAudioDeviceFailed("
|
| + << label << ", " << index << ")";
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void MediaStreamImpl::OnVideoDevicesEnumerated(
|
| + int request_id,
|
| + const media_stream::StreamDeviceInfoArray& device_array) {
|
| + DVLOG(1) << "MediaStreamImpl::OnVideoDevicesEnumerated("
|
| + << request_id << ")";
|
| + media_stream::StreamDeviceInfoArray::const_iterator it;
|
| + for (it = device_array.begin(); it != device_array.end(); it++) {
|
| + }
|
| + if (desired_device_index < static_cast<int>(device_array.size())) {
|
| + media_stream_dispatcher_->OpenVideoDevice(
|
| + next_request_id++, this,
|
| + device_array[desired_device_index].device_id, "");
|
| + }
|
| +}
|
| +
|
| +void MediaStreamImpl::OnVideoDevicesEnumerationFailed(int request_id) {
|
| + DVLOG(1) << "MediaStreamImpl::OnVideoDevicesEnumerationFailed("
|
| + << request_id << ")";
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void MediaStreamImpl::OnVideoDeviceOpened(
|
| + int request_id,
|
| + const std::string& label,
|
| + const media_stream::StreamDeviceInfo& video_device) {
|
| + DVLOG(1) << "MediaStreamImpl::OnVideoDeviceOpened("
|
| + << request_id << ", " << label << ")";
|
| + local_label_ = label;
|
| +}
|
| +
|
| +void MediaStreamImpl::OnVideoDeviceOpenFailed(int request_id) {
|
| + DVLOG(1) << "MediaStreamImpl::VideoDeviceOpenFailed("
|
| + << request_id << ")";
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
|
|