Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: content/renderer/media/media_stream_impl.cc

Issue 90743004: Add generic interfaces for the sinks of the media stream audio track (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased, addressed Alpha, Per, John's comments. Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/media_stream_impl.h" 5 #include "content/renderer/media/media_stream_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 return NULL; // This is not a valid stream. 264 return NULL; // This is not a valid stream.
265 265
266 DVLOG(1) << "MediaStreamImpl::GetAudioRenderer stream:" 266 DVLOG(1) << "MediaStreamImpl::GetAudioRenderer stream:"
267 << UTF16ToUTF8(web_stream.id()); 267 << UTF16ToUTF8(web_stream.id());
268 268
269 MediaStreamExtraData* extra_data = 269 MediaStreamExtraData* extra_data =
270 static_cast<MediaStreamExtraData*>(web_stream.extraData()); 270 static_cast<MediaStreamExtraData*>(web_stream.extraData());
271 271
272 if (extra_data->is_local()) { 272 if (extra_data->is_local()) {
273 // Create the local audio renderer if the stream contains audio tracks. 273 // Create the local audio renderer if the stream contains audio tracks.
274 return CreateLocalAudioRenderer(extra_data->stream().get()); 274 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
275 web_stream.audioTracks(audio_tracks);
276 if (audio_tracks.isEmpty())
277 return NULL;
278
279 // TODO(xians): Add support for the case that the media stream contains
280 // multiple audio tracks.
281 return CreateLocalAudioRenderer(audio_tracks[0]);
275 } 282 }
276 283
277 webrtc::MediaStreamInterface* stream = extra_data->stream().get(); 284 webrtc::MediaStreamInterface* stream = extra_data->stream().get();
278 if (!stream || stream->GetAudioTracks().empty()) 285 if (!stream || stream->GetAudioTracks().empty())
279 return NULL; 286 return NULL;
280 287
281 // This is a remote media stream. 288 // This is a remote media stream.
282 WebRtcAudioDeviceImpl* audio_device = 289 WebRtcAudioDeviceImpl* audio_device =
283 dependency_factory_->GetWebRtcAudioDevice(); 290 dependency_factory_->GetWebRtcAudioDevice();
284 291
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 &buffer_size)) { 799 &buffer_size)) {
793 GetDefaultOutputDeviceParams(&sample_rate, &buffer_size); 800 GetDefaultOutputDeviceParams(&sample_rate, &buffer_size);
794 } 801 }
795 802
796 return new WebRtcAudioRenderer(RenderViewObserver::routing_id(), 803 return new WebRtcAudioRenderer(RenderViewObserver::routing_id(),
797 session_id, sample_rate, buffer_size); 804 session_id, sample_rate, buffer_size);
798 } 805 }
799 806
800 scoped_refptr<WebRtcLocalAudioRenderer> 807 scoped_refptr<WebRtcLocalAudioRenderer>
801 MediaStreamImpl::CreateLocalAudioRenderer( 808 MediaStreamImpl::CreateLocalAudioRenderer(
802 webrtc::MediaStreamInterface* stream) { 809 const blink::WebMediaStreamTrack& audio_track) {
803 if (stream->GetAudioTracks().empty()) 810 DVLOG(1) << "MediaStreamImpl::CreateLocalAudioRenderer";
804 return NULL;
805
806 DVLOG(1) << "MediaStreamImpl::CreateLocalAudioRenderer label:"
807 << stream->label();
808
809 webrtc::AudioTrackVector audio_tracks = stream->GetAudioTracks();
810 DCHECK_EQ(audio_tracks.size(), 1u);
811 webrtc::AudioTrackInterface* audio_track = audio_tracks[0];
812 DVLOG(1) << "audio_track.kind : " << audio_track->kind()
813 << "audio_track.id : " << audio_track->id()
814 << "audio_track.enabled: " << audio_track->enabled();
815 811
816 int session_id = 0, sample_rate = 0, buffer_size = 0; 812 int session_id = 0, sample_rate = 0, buffer_size = 0;
817 if (!GetAuthorizedDeviceInfoForAudioRenderer(&session_id, 813 if (!GetAuthorizedDeviceInfoForAudioRenderer(&session_id,
818 &sample_rate, 814 &sample_rate,
819 &buffer_size)) { 815 &buffer_size)) {
820 GetDefaultOutputDeviceParams(&sample_rate, &buffer_size); 816 GetDefaultOutputDeviceParams(&sample_rate, &buffer_size);
821 } 817 }
822 818
823 // Create a new WebRtcLocalAudioRenderer instance and connect it to the 819 // Create a new WebRtcLocalAudioRenderer instance and connect it to the
824 // existing WebRtcAudioCapturer so that the renderer can use it as source. 820 // existing WebRtcAudioCapturer so that the renderer can use it as source.
825 return new WebRtcLocalAudioRenderer( 821 return new WebRtcLocalAudioRenderer(
826 static_cast<WebRtcLocalAudioTrack*>(audio_track), 822 audio_track,
827 RenderViewObserver::routing_id(), 823 RenderViewObserver::routing_id(),
828 session_id, 824 session_id,
829 buffer_size); 825 buffer_size);
830 } 826 }
831 827
832 bool MediaStreamImpl::GetAuthorizedDeviceInfoForAudioRenderer( 828 bool MediaStreamImpl::GetAuthorizedDeviceInfoForAudioRenderer(
833 int* session_id, 829 int* session_id,
834 int* output_sample_rate, 830 int* output_sample_rate,
835 int* output_frames_per_buffer) { 831 int* output_frames_per_buffer) {
836 DCHECK(CalledOnValidThread()); 832 DCHECK(CalledOnValidThread());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 enable_automatic_output_device_selection( 891 enable_automatic_output_device_selection(
896 enable_automatic_output_device_selection), 892 enable_automatic_output_device_selection),
897 frame(frame), 893 frame(frame),
898 request(request) { 894 request(request) {
899 } 895 }
900 896
901 MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() { 897 MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() {
902 } 898 }
903 899
904 } // namespace content 900 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698