diff options
author | miu@chromium.org <miu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-18 01:45:46 +0000 |
---|---|---|
committer | miu@chromium.org <miu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-18 01:45:46 +0000 |
commit | ea2211c2e057c9b60f2c0644c8289be5c56cefa2 (patch) | |
tree | 5dfee0db37e33760c767218dc53007da7d0d7cd8 /content | |
parent | 1e5b6bf58a04ff80f1255090e91e196c8ba706fe (diff) | |
download | chromium_src-ea2211c2e057c9b60f2c0644c8289be5c56cefa2.zip chromium_src-ea2211c2e057c9b60f2c0644c8289be5c56cefa2.tar.gz chromium_src-ea2211c2e057c9b60f2c0644c8289be5c56cefa2.tar.bz2 |
Enable "screencast" mode in RtcVideoCapturer for tab video mirroring. This allows the downstream implementation to select a different set of video encoding parameters to better optimize the user experience.
Review URL: https://chromiumcodereview.appspot.com/11187042
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@162604 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
8 files changed, 30 insertions, 17 deletions
diff --git a/content/renderer/media/media_stream_dependency_factory.cc b/content/renderer/media/media_stream_dependency_factory.cc index 15229d2..738581f 100644 --- a/content/renderer/media/media_stream_dependency_factory.cc +++ b/content/renderer/media/media_stream_dependency_factory.cc @@ -172,9 +172,12 @@ bool MediaStreamDependencyFactory::CreateNativeLocalMediaStream( NOTIMPLEMENTED(); continue; } + const bool is_screencast = (source_data->device_info().stream_type == + content::MEDIA_TAB_VIDEO_CAPTURE); scoped_refptr<webrtc::LocalVideoTrackInterface> video_track( CreateLocalVideoTrack(UTF16ToUTF8(source.id()), - source_data->device_info().session_id)); + source_data->device_info().session_id, + is_screencast)); native_stream->AddTrack(video_track); video_track->set_enabled(video_components[i].isEnabled()); } @@ -253,9 +256,10 @@ MediaStreamDependencyFactory::CreateLocalMediaStream( scoped_refptr<webrtc::LocalVideoTrackInterface> MediaStreamDependencyFactory::CreateLocalVideoTrack( const std::string& label, - int video_session_id) { - RtcVideoCapturer* capturer = new RtcVideoCapturer(video_session_id, - vc_manager_.get()); + int video_session_id, + bool is_screencast) { + RtcVideoCapturer* capturer = new RtcVideoCapturer( + video_session_id, vc_manager_.get(), is_screencast); // The video track takes ownership of |capturer|. return pc_factory_->CreateLocalVideoTrack(label, capturer).get(); diff --git a/content/renderer/media/media_stream_dependency_factory.h b/content/renderer/media/media_stream_dependency_factory.h index c9deb11..faa0086 100644 --- a/content/renderer/media/media_stream_dependency_factory.h +++ b/content/renderer/media/media_stream_dependency_factory.h @@ -116,7 +116,8 @@ class CONTENT_EXPORT MediaStreamDependencyFactory // Asks the PeerConnection factory to create a Local VideoTrack object. virtual scoped_refptr<webrtc::LocalVideoTrackInterface> CreateLocalVideoTrack(const std::string& label, - int video_session_id); + int video_session_id, + bool is_screencast); // Asks the PeerConnection factory to create a Local AudioTrack object. virtual scoped_refptr<webrtc::LocalAudioTrackInterface> diff --git a/content/renderer/media/mock_media_stream_dependency_factory.cc b/content/renderer/media/mock_media_stream_dependency_factory.cc index 42976a4..cf8645b 100644 --- a/content/renderer/media/mock_media_stream_dependency_factory.cc +++ b/content/renderer/media/mock_media_stream_dependency_factory.cc @@ -292,7 +292,8 @@ MockMediaStreamDependencyFactory::CreateLocalMediaStream( scoped_refptr<webrtc::LocalVideoTrackInterface> MockMediaStreamDependencyFactory::CreateLocalVideoTrack( const std::string& label, - int video_session_id) { + int video_session_id, + bool is_screencast) { DCHECK(mock_pc_factory_created_); scoped_refptr<webrtc::LocalVideoTrackInterface> track( new talk_base::RefCountedObject<webrtc::MockLocalVideoTrack>(label)); diff --git a/content/renderer/media/mock_media_stream_dependency_factory.h b/content/renderer/media/mock_media_stream_dependency_factory.h index 76f9af8..0c36f62 100644 --- a/content/renderer/media/mock_media_stream_dependency_factory.h +++ b/content/renderer/media/mock_media_stream_dependency_factory.h @@ -85,7 +85,8 @@ class MockMediaStreamDependencyFactory : public MediaStreamDependencyFactory { CreateLocalMediaStream(const std::string& label) OVERRIDE; virtual scoped_refptr<webrtc::LocalVideoTrackInterface> CreateLocalVideoTrack(const std::string& label, - int video_session_id) OVERRIDE; + int video_session_id, + bool is_screencast) OVERRIDE; virtual scoped_refptr<webrtc::LocalAudioTrackInterface> CreateLocalAudioTrack(const std::string& label, webrtc::AudioDeviceModule* audio_device) OVERRIDE; diff --git a/content/renderer/media/peer_connection_handler_jsep_unittest.cc b/content/renderer/media/peer_connection_handler_jsep_unittest.cc index 474e967..cfd0f0d 100644 --- a/content/renderer/media/peer_connection_handler_jsep_unittest.cc +++ b/content/renderer/media/peer_connection_handler_jsep_unittest.cc @@ -71,7 +71,8 @@ class PeerConnectionHandlerJsepTest : public ::testing::Test { NULL)); native_stream->AddTrack(audio_track); talk_base::scoped_refptr<webrtc::LocalVideoTrackInterface> video_track( - mock_dependency_factory_->CreateLocalVideoTrack(video_track_label, 0)); + mock_dependency_factory_->CreateLocalVideoTrack( + video_track_label, 0, false)); native_stream->AddTrack(video_track); WebKit::WebVector<WebKit::WebMediaStreamSource> audio_sources( @@ -103,8 +104,8 @@ class PeerConnectionHandlerJsepTest : public ::testing::Test { mock_dependency_factory_->CreateLocalMediaStream(stream_label)); if (!video_track_label.empty()) { talk_base::scoped_refptr<webrtc::LocalVideoTrackInterface> video_track( - mock_dependency_factory_->CreateLocalVideoTrack(video_track_label, - 0)); + mock_dependency_factory_->CreateLocalVideoTrack( + video_track_label, 0, false)); stream->AddTrack(video_track); } if (!audio_track_label.empty()) { diff --git a/content/renderer/media/rtc_peer_connection_handler_unittest.cc b/content/renderer/media/rtc_peer_connection_handler_unittest.cc index b2eb8fb..b65a0d6 100644 --- a/content/renderer/media/rtc_peer_connection_handler_unittest.cc +++ b/content/renderer/media/rtc_peer_connection_handler_unittest.cc @@ -75,7 +75,8 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test { NULL)); native_stream->AddTrack(audio_track); scoped_refptr<webrtc::LocalVideoTrackInterface> video_track( - mock_dependency_factory_->CreateLocalVideoTrack(video_track_label, 0)); + mock_dependency_factory_->CreateLocalVideoTrack( + video_track_label, 0, false)); native_stream->AddTrack(video_track); WebKit::WebVector<WebKit::WebMediaStreamSource> audio_sources( @@ -107,8 +108,8 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test { mock_dependency_factory_->CreateLocalMediaStream(stream_label)); if (!video_track_label.empty()) { scoped_refptr<webrtc::LocalVideoTrackInterface> video_track( - mock_dependency_factory_->CreateLocalVideoTrack(video_track_label, - 0)); + mock_dependency_factory_->CreateLocalVideoTrack( + video_track_label, 0, false)); stream->AddTrack(video_track); } if (!audio_track_label.empty()) { diff --git a/content/renderer/media/rtc_video_capturer.cc b/content/renderer/media/rtc_video_capturer.cc index 08dca45..5afebdb 100644 --- a/content/renderer/media/rtc_video_capturer.cc +++ b/content/renderer/media/rtc_video_capturer.cc @@ -8,8 +8,10 @@ RtcVideoCapturer::RtcVideoCapturer( const media::VideoCaptureSessionId id, - VideoCaptureImplManager* vc_manager) - : delegate_(new RtcVideoCaptureDelegate(id, vc_manager)), + VideoCaptureImplManager* vc_manager, + bool is_screencast) + : is_screencast_(is_screencast), + delegate_(new RtcVideoCaptureDelegate(id, vc_manager)), state_(video_capture::kStopped) { } @@ -61,7 +63,7 @@ bool RtcVideoCapturer::GetPreferredFourccs(std::vector<uint32>* fourccs) { } bool RtcVideoCapturer::IsScreencast() { - return false; + return is_screencast_; } bool RtcVideoCapturer::GetBestCaptureFormat(const cricket::VideoFormat& desired, diff --git a/content/renderer/media/rtc_video_capturer.h b/content/renderer/media/rtc_video_capturer.h index 7888bf5..8d929c8 100644 --- a/content/renderer/media/rtc_video_capturer.h +++ b/content/renderer/media/rtc_video_capturer.h @@ -23,7 +23,8 @@ class RtcVideoCapturer : public cricket::VideoCapturer { public: RtcVideoCapturer(const media::VideoCaptureSessionId id, - VideoCaptureImplManager* vc_manager); + VideoCaptureImplManager* vc_manager, + bool is_screencast); virtual ~RtcVideoCapturer(); // cricket::VideoCapturer implementation. @@ -42,6 +43,7 @@ class RtcVideoCapturer virtual void OnFrameCaptured( const media::VideoCapture::VideoFrameBuffer& frame); + const bool is_screencast_; scoped_refptr<RtcVideoCaptureDelegate> delegate_; video_capture::State state_; base::Time start_time_; |