diff options
author | ronghuawu@chromium.org <ronghuawu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-11 07:28:27 +0000 |
---|---|---|
committer | ronghuawu@chromium.org <ronghuawu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-11 07:28:27 +0000 |
commit | e7798ff4ef9c92466e4f8f443a567a61929a7232 (patch) | |
tree | 6870c21eff7f7f68b73291eab614c77549d31949 /content/renderer | |
parent | 3c08f316cc3a934beec19aa84ec6f88c4a677902 (diff) | |
download | chromium_src-e7798ff4ef9c92466e4f8f443a567a61929a7232.zip chromium_src-e7798ff4ef9c92466e4f8f443a567a61929a7232.tar.gz chromium_src-e7798ff4ef9c92466e4f8f443a567a61929a7232.tar.bz2 |
Use the track id instead of the source id to create native media track.
TEST=unit tests and apprtc
Review URL: https://codereview.chromium.org/12200007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181667 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer')
4 files changed, 54 insertions, 47 deletions
diff --git a/content/renderer/media/media_stream_dependency_factory.cc b/content/renderer/media/media_stream_dependency_factory.cc index 58efd95..d4f9ee9 100644 --- a/content/renderer/media/media_stream_dependency_factory.cc +++ b/content/renderer/media/media_stream_dependency_factory.cc @@ -207,10 +207,10 @@ void MediaStreamDependencyFactory::CreateNativeMediaSources( // Create local video sources. RTCMediaConstraints native_video_constraints(video_constraints); - WebKit::WebVector<WebKit::WebMediaStreamTrack> video_components; - description->videoSources(video_components); - for (size_t i = 0; i < video_components.size(); ++i) { - const WebKit::WebMediaStreamSource& source = video_components[i].source(); + WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; + description->videoSources(video_tracks); + for (size_t i = 0; i < video_tracks.size(); ++i) { + const WebKit::WebMediaStreamSource& source = video_tracks[i].source(); MediaStreamSourceExtraData* source_data = static_cast<MediaStreamSourceExtraData*>(source.extraData()); if (!source_data) { @@ -230,10 +230,10 @@ void MediaStreamDependencyFactory::CreateNativeMediaSources( // Do additional source initialization if the audio source is a valid // microphone or tab audio. RTCMediaConstraints native_audio_constraints(audio_constraints); - WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_components; - description->audioSources(audio_components); - for (size_t i = 0; i < audio_components.size(); ++i) { - const WebKit::WebMediaStreamSource& source = audio_components[i].source(); + WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; + description->audioSources(audio_tracks); + for (size_t i = 0; i < audio_tracks.size(); ++i) { + const WebKit::WebMediaStreamSource& source = audio_tracks[i].source(); MediaStreamSourceExtraData* source_data = static_cast<MediaStreamSourceExtraData*>(source.extraData()); if (!source_data) { @@ -273,11 +273,11 @@ void MediaStreamDependencyFactory::CreateNativeLocalMediaStream( CreateLocalMediaStream(label); // Add audio tracks. - WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_components; - description->audioSources(audio_components); + WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; + description->audioSources(audio_tracks); - for (size_t i = 0; i < audio_components.size(); ++i) { - WebKit::WebMediaStreamSource source = audio_components[i].source(); + for (size_t i = 0; i < audio_tracks.size(); ++i) { + WebKit::WebMediaStreamSource source = audio_tracks[i].source(); // See if we're adding a WebAudio MediaStream. if (source.requiresAudioConsumer()) { @@ -289,10 +289,10 @@ void MediaStreamDependencyFactory::CreateNativeLocalMediaStream( // constraints are passed via LocalAudioSource. if (CreateWebAudioSource(&source)) { scoped_refptr<webrtc::LocalAudioTrackInterface> audio_track( - CreateLocalAudioTrack(UTF16ToUTF8(audio_components[i].id()), + CreateLocalAudioTrack(UTF16ToUTF8(audio_tracks[i].id()), NULL)); native_stream->AddTrack(audio_track); - audio_track->set_enabled(audio_components[i].isEnabled()); + audio_track->set_enabled(audio_tracks[i].isEnabled()); } else { DLOG(WARNING) << "Failed to create WebAudio source"; } @@ -308,18 +308,18 @@ void MediaStreamDependencyFactory::CreateNativeLocalMediaStream( } scoped_refptr<webrtc::LocalAudioTrackInterface> audio_track( - CreateLocalAudioTrack(UTF16ToUTF8(source.id()), + CreateLocalAudioTrack(UTF16ToUTF8(audio_tracks[i].id()), source_data->local_audio_source())); native_stream->AddTrack(audio_track); - audio_track->set_enabled(audio_components[i].isEnabled()); + audio_track->set_enabled(audio_tracks[i].isEnabled()); } } // Add video tracks. - WebKit::WebVector<WebKit::WebMediaStreamTrack> video_components; - description->videoSources(video_components); - for (size_t i = 0; i < video_components.size(); ++i) { - const WebKit::WebMediaStreamSource& source = video_components[i].source(); + WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; + description->videoSources(video_tracks); + for (size_t i = 0; i < video_tracks.size(); ++i) { + const WebKit::WebMediaStreamSource& source = video_tracks[i].source(); MediaStreamSourceExtraData* source_data = static_cast<MediaStreamSourceExtraData*>(source.extraData()); if (!source_data || !source_data->video_source()) { @@ -329,11 +329,11 @@ void MediaStreamDependencyFactory::CreateNativeLocalMediaStream( } scoped_refptr<webrtc::VideoTrackInterface> video_track( - CreateLocalVideoTrack(UTF16ToUTF8(source.id()), + CreateLocalVideoTrack(UTF16ToUTF8(video_tracks[i].id()), source_data->video_source())); native_stream->AddTrack(video_track); - video_track->set_enabled(video_components[i].isEnabled()); + video_track->set_enabled(video_tracks[i].isEnabled()); } MediaStreamExtraData* extra_data = new MediaStreamExtraData(native_stream); @@ -468,16 +468,16 @@ bool MediaStreamDependencyFactory::CreateWebAudioSource( scoped_refptr<webrtc::VideoTrackInterface> MediaStreamDependencyFactory::CreateLocalVideoTrack( - const std::string& label, + const std::string& id, webrtc::VideoSourceInterface* source) { - return pc_factory_->CreateVideoTrack(label, source).get(); + return pc_factory_->CreateVideoTrack(id, source).get(); } scoped_refptr<webrtc::LocalAudioTrackInterface> MediaStreamDependencyFactory::CreateLocalAudioTrack( - const std::string& label, + const std::string& id, webrtc::AudioSourceInterface* source) { - return pc_factory_->CreateAudioTrack(label, source).get(); + return pc_factory_->CreateAudioTrack(id, source).get(); } webrtc::SessionDescriptionInterface* diff --git a/content/renderer/media/media_stream_dependency_factory.h b/content/renderer/media/media_stream_dependency_factory.h index 712e932..4cee7f3 100644 --- a/content/renderer/media/media_stream_dependency_factory.h +++ b/content/renderer/media/media_stream_dependency_factory.h @@ -142,12 +142,12 @@ class CONTENT_EXPORT MediaStreamDependencyFactory // Asks the PeerConnection factory to create a Local AudioTrack object. virtual scoped_refptr<webrtc::LocalAudioTrackInterface> - CreateLocalAudioTrack(const std::string& label, + CreateLocalAudioTrack(const std::string& id, webrtc::AudioSourceInterface* source); // Asks the PeerConnection factory to create a Local VideoTrack object. virtual scoped_refptr<webrtc::VideoTrackInterface> - CreateLocalVideoTrack(const std::string& label, + CreateLocalVideoTrack(const std::string& id, webrtc::VideoSourceInterface* source); virtual bool EnsurePeerConnectionFactory(); diff --git a/content/renderer/media/peer_connection_handler_base.cc b/content/renderer/media/peer_connection_handler_base.cc index 4ce0796..12b91cd 100644 --- a/content/renderer/media/peer_connection_handler_base.cc +++ b/content/renderer/media/peer_connection_handler_base.cc @@ -27,10 +27,10 @@ static webrtc::LocalMediaStreamInterface* GetLocalNativeMediaStream( template <class TrackList> static webrtc::MediaStreamTrackInterface* GetLocalTrack( - const std::string& source_id, + const std::string& track_id, TrackList* tracks) { for (size_t i = 0; i < tracks->count(); ++i) { - if (tracks->at(i)->id() == source_id) + if (tracks->at(i)->id() == track_id) return tracks->at(i); } return NULL; @@ -104,20 +104,20 @@ PeerConnectionHandlerBase::CreateWebKitStreamDescriptor( webrtc::MediaStreamTrackInterface* PeerConnectionHandlerBase::GetLocalNativeMediaStreamTrack( const WebKit::WebMediaStream& stream, - const WebKit::WebMediaStreamTrack& component) { - std::string source_id = UTF16ToUTF8(component.source().id()); + const WebKit::WebMediaStreamTrack& track) { + std::string track_id = UTF16ToUTF8(track.id()); webrtc::MediaStreamInterface* native_stream = GetLocalNativeMediaStream(stream); if (!native_stream) { return NULL; } - if (component.source().type() == WebKit::WebMediaStreamSource::TypeAudio) { + if (track.source().type() == WebKit::WebMediaStreamSource::TypeAudio) { return GetLocalTrack<webrtc::AudioTracks>( - source_id, native_stream->audio_tracks()); + track_id, native_stream->audio_tracks()); } - if (component.source().type() == WebKit::WebMediaStreamSource::TypeVideo) { + if (track.source().type() == WebKit::WebMediaStreamSource::TypeVideo) { return GetLocalTrack<webrtc::VideoTracks>( - source_id, native_stream->video_tracks()); + track_id, native_stream->video_tracks()); } NOTIMPLEMENTED(); // We have an unknown type of media stream track. return NULL; diff --git a/content/renderer/media/rtc_peer_connection_handler_unittest.cc b/content/renderer/media/rtc_peer_connection_handler_unittest.cc index e1ff3c7..a227438 100644 --- a/content/renderer/media/rtc_peer_connection_handler_unittest.cc +++ b/content/renderer/media/rtc_peer_connection_handler_unittest.cc @@ -213,17 +213,6 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test { std::string video_track_label("video-label"); std::string audio_track_label("audio-label"); - scoped_refptr<webrtc::LocalMediaStreamInterface> native_stream( - mock_dependency_factory_->CreateLocalMediaStream(stream_label)); - scoped_refptr<webrtc::LocalAudioTrackInterface> audio_track( - mock_dependency_factory_->CreateLocalAudioTrack(audio_track_label, - NULL)); - native_stream->AddTrack(audio_track); - scoped_refptr<webrtc::LocalVideoTrackInterface> video_track( - mock_dependency_factory_->CreateLocalVideoTrack( - video_track_label, 0)); - native_stream->AddTrack(video_track); - WebKit::WebVector<WebKit::WebMediaStreamSource> audio_sources( static_cast<size_t>(1)); audio_sources[0].initialize(WebKit::WebString::fromUTF8(audio_track_label), @@ -237,6 +226,24 @@ class RTCPeerConnectionHandlerTest : public ::testing::Test { WebKit::WebMediaStream local_stream; local_stream.initialize(UTF8ToUTF16(stream_label), audio_sources, video_sources); + + scoped_refptr<webrtc::LocalMediaStreamInterface> native_stream( + mock_dependency_factory_->CreateLocalMediaStream(stream_label)); + WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; + local_stream.audioSources(audio_tracks); + const std::string audio_track_id = UTF16ToUTF8(audio_tracks[0].id()); + scoped_refptr<webrtc::LocalAudioTrackInterface> audio_track( + mock_dependency_factory_->CreateLocalAudioTrack(audio_track_id, + NULL)); + native_stream->AddTrack(audio_track); + WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; + local_stream.audioSources(video_tracks); + const std::string video_track_id = UTF16ToUTF8(video_tracks[0].id()); + scoped_refptr<webrtc::LocalVideoTrackInterface> video_track( + mock_dependency_factory_->CreateLocalVideoTrack( + video_track_id, 0)); + native_stream->AddTrack(video_track); + local_stream.setExtraData(new MediaStreamExtraData(native_stream)); return local_stream; } |