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

Unified Diff: content/renderer/media/media_stream_impl.cc

Issue 294043015: Move creation of MediaStream renders from MediaStreamImpl to MediaStreamRenderFactory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed commments. Fixed build when enable_webrtc = 0 Created 6 years, 7 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/media/media_stream_impl.h ('k') | content/renderer/media/media_stream_renderer_factory.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/media_stream_impl.cc
diff --git a/content/renderer/media/media_stream_impl.cc b/content/renderer/media/media_stream_impl.cc
index b8af5a8c3474221b15d62b412ebd9294d3c7dc91..e1bb11196e0a3830eac72eff46bf3c17cf0a2cfe 100644
--- a/content/renderer/media/media_stream_impl.cc
+++ b/content/renderer/media/media_stream_impl.cc
@@ -11,26 +11,20 @@
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "content/renderer/media/media_stream.h"
-#include "content/renderer/media/media_stream_audio_renderer.h"
#include "content/renderer/media/media_stream_audio_source.h"
#include "content/renderer/media/media_stream_dispatcher.h"
#include "content/renderer/media/media_stream_video_capturer_source.h"
#include "content/renderer/media/media_stream_video_track.h"
#include "content/renderer/media/peer_connection_tracker.h"
-#include "content/renderer/media/rtc_video_renderer.h"
#include "content/renderer/media/webrtc/webrtc_video_capturer_adapter.h"
#include "content/renderer/media/webrtc_audio_capturer.h"
-#include "content/renderer/media/webrtc_audio_renderer.h"
-#include "content/renderer/media/webrtc_local_audio_renderer.h"
#include "content/renderer/media/webrtc_logging.h"
#include "content/renderer/media/webrtc_uma_histograms.h"
#include "content/renderer/render_thread_impl.h"
-#include "media/base/audio_hardware_config.h"
#include "third_party/WebKit/public/platform/WebMediaConstraints.h"
#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
#include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebLocalFrame.h"
-#include "third_party/WebKit/public/web/WebMediaStreamRegistry.h"
namespace content {
namespace {
@@ -57,15 +51,6 @@ void CopyStreamConstraints(const blink::WebMediaConstraints& constraints,
static int g_next_request_id = 0;
-void GetDefaultOutputDeviceParams(
- int* output_sample_rate, int* output_buffer_size) {
- // Fetch the default audio output hardware config.
- media::AudioHardwareConfig* hardware_config =
- RenderThreadImpl::current()->GetAudioHardwareConfig();
- *output_sample_rate = hardware_config->GetOutputSampleRate();
- *output_buffer_size = hardware_config->GetOutputBufferSize();
-}
-
} // namespace
MediaStreamImpl::MediaStreamImpl(
@@ -185,99 +170,6 @@ void MediaStreamImpl::cancelUserMediaRequest(
}
}
-blink::WebMediaStream MediaStreamImpl::GetMediaStream(
- const GURL& url) {
- return blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url);
-}
-
-bool MediaStreamImpl::IsMediaStream(const GURL& url) {
- blink::WebMediaStream web_stream(
- blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url));
-
- return (!web_stream.isNull() &&
- (MediaStream::GetMediaStream(web_stream) != NULL));
-}
-
-scoped_refptr<VideoFrameProvider>
-MediaStreamImpl::GetVideoFrameProvider(
- const GURL& url,
- const base::Closure& error_cb,
- const VideoFrameProvider::RepaintCB& repaint_cb) {
- DCHECK(CalledOnValidThread());
- blink::WebMediaStream web_stream(GetMediaStream(url));
-
- if (web_stream.isNull() || !web_stream.extraData())
- return NULL; // This is not a valid stream.
-
- DVLOG(1) << "MediaStreamImpl::GetVideoFrameProvider stream:"
- << base::UTF16ToUTF8(web_stream.id());
-
- blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
- web_stream.videoTracks(video_tracks);
- if (video_tracks.isEmpty() ||
- !MediaStreamVideoTrack::GetTrack(video_tracks[0])) {
- return NULL;
- }
-
- return new RTCVideoRenderer(video_tracks[0], error_cb, repaint_cb);
-}
-
-scoped_refptr<MediaStreamAudioRenderer>
-MediaStreamImpl::GetAudioRenderer(const GURL& url, int render_frame_id) {
- DCHECK(CalledOnValidThread());
- blink::WebMediaStream web_stream(GetMediaStream(url));
-
- if (web_stream.isNull() || !web_stream.extraData())
- return NULL; // This is not a valid stream.
-
- DVLOG(1) << "MediaStreamImpl::GetAudioRenderer stream:"
- << base::UTF16ToUTF8(web_stream.id());
-
- MediaStream* native_stream = MediaStream::GetMediaStream(web_stream);
-
- // TODO(tommi): MediaStreams do not have a 'local or not' concept.
- // Tracks _might_, but even so, we need to fix the data flow so that
- // it works the same way for all track implementations, local, remote or what
- // have you.
- // In this function, we should simply create a renderer object that receives
- // and mixes audio from all the tracks that belong to the media stream.
- // We need to remove the |is_local| property from MediaStreamExtraData since
- // this concept is peerconnection specific (is a previously recorded stream
- // local or remote?).
- if (native_stream->is_local()) {
- // Create the local audio renderer if the stream contains audio tracks.
- blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
- web_stream.audioTracks(audio_tracks);
- if (audio_tracks.isEmpty())
- return NULL;
-
- // TODO(xians): Add support for the case where the media stream contains
- // multiple audio tracks.
- return CreateLocalAudioRenderer(audio_tracks[0], render_frame_id);
- }
-
- webrtc::MediaStreamInterface* stream =
- MediaStream::GetAdapter(web_stream);
- if (stream->GetAudioTracks().empty())
- return NULL;
-
- // This is a remote WebRTC media stream.
- WebRtcAudioDeviceImpl* audio_device =
- dependency_factory_->GetWebRtcAudioDevice();
-
- // Share the existing renderer if any, otherwise create a new one.
- scoped_refptr<WebRtcAudioRenderer> renderer(audio_device->renderer());
- if (!renderer.get()) {
- renderer = CreateRemoteAudioRenderer(stream, render_frame_id);
-
- if (renderer.get() && !audio_device->SetAudioRenderer(renderer.get()))
- renderer = NULL;
- }
-
- return renderer.get() ?
- renderer->CreateSharedAudioRendererProxy(stream) : NULL;
-}
-
// Callback from MediaStreamDispatcher.
// The requested stream have been generated by the MediaStreamDispatcher.
void MediaStreamImpl::OnStreamGenerated(
@@ -718,66 +610,6 @@ void MediaStreamImpl::StopLocalSource(
source_impl->StopSource();
}
-scoped_refptr<WebRtcAudioRenderer> MediaStreamImpl::CreateRemoteAudioRenderer(
- webrtc::MediaStreamInterface* stream,
- int render_frame_id) {
- if (stream->GetAudioTracks().empty())
- return NULL;
-
- DVLOG(1) << "MediaStreamImpl::CreateRemoteAudioRenderer label:"
- << stream->label();
-
- // TODO(tommi): Change the default value of session_id to be
- // StreamDeviceInfo::kNoId. Also update AudioOutputDevice etc.
- int session_id = 0, sample_rate = 0, buffer_size = 0;
- if (!GetAuthorizedDeviceInfoForAudioRenderer(&session_id,
- &sample_rate,
- &buffer_size)) {
- GetDefaultOutputDeviceParams(&sample_rate, &buffer_size);
- }
-
- return new WebRtcAudioRenderer(
- stream, RenderViewObserver::routing_id(), render_frame_id, session_id,
- sample_rate, buffer_size);
-}
-
-scoped_refptr<WebRtcLocalAudioRenderer>
-MediaStreamImpl::CreateLocalAudioRenderer(
- const blink::WebMediaStreamTrack& audio_track,
- int render_frame_id) {
- DVLOG(1) << "MediaStreamImpl::CreateLocalAudioRenderer";
-
- int session_id = 0, sample_rate = 0, buffer_size = 0;
- if (!GetAuthorizedDeviceInfoForAudioRenderer(&session_id,
- &sample_rate,
- &buffer_size)) {
- GetDefaultOutputDeviceParams(&sample_rate, &buffer_size);
- }
-
- // Create a new WebRtcLocalAudioRenderer instance and connect it to the
- // existing WebRtcAudioCapturer so that the renderer can use it as source.
- return new WebRtcLocalAudioRenderer(
- audio_track,
- RenderViewObserver::routing_id(),
- render_frame_id,
- session_id,
- buffer_size);
-}
-
-bool MediaStreamImpl::GetAuthorizedDeviceInfoForAudioRenderer(
- int* session_id,
- int* output_sample_rate,
- int* output_frames_per_buffer) {
- DCHECK(CalledOnValidThread());
- WebRtcAudioDeviceImpl* audio_device =
- dependency_factory_->GetWebRtcAudioDevice();
- if (!audio_device)
- return false;
-
- return audio_device->GetAuthorizedDeviceInfoForAudioRenderer(
- session_id, output_sample_rate, output_frames_per_buffer);
-}
-
MediaStreamImpl::UserMediaRequestInfo::UserMediaRequestInfo(
int request_id,
blink::WebFrame* frame,
« no previous file with comments | « content/renderer/media/media_stream_impl.h ('k') | content/renderer/media/media_stream_renderer_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698