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

Unified Diff: content/public/renderer/media_stream_api.cc

Issue 1647773002: MediaStream audio sourcing: Bypass audio processing for non-WebRTC cases. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: NOT FOR REVIEW -- This will be broken-up across multiple CLs. Created 4 years, 10 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/public/renderer/media_stream_api.h ('k') | content/public/renderer/media_stream_audio_sink.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/public/renderer/media_stream_api.cc
diff --git a/content/public/renderer/media_stream_api.cc b/content/public/renderer/media_stream_api.cc
index 9ec76b703105d1ea58e20fc28bc30420289bde9d..5a83938778b1fb3a6fe2e45bdfb466d8e5e3f1e5 100644
--- a/content/public/renderer/media_stream_api.cc
+++ b/content/public/renderer/media_stream_api.cc
@@ -7,18 +7,17 @@
#include <utility>
#include "base/base64.h"
+#include "base/bind_helpers.h"
#include "base/callback.h"
#include "base/rand_util.h"
#include "base/strings/utf_string_conversions.h"
-#include "content/renderer/media/media_stream_audio_source.h"
+#include "content/common/media/media_stream_options.h"
+#include "content/renderer/media/external_media_stream_audio_source.h"
#include "content/renderer/media/media_stream_video_capturer_source.h"
#include "content/renderer/media/media_stream_video_track.h"
-#include "content/renderer/render_thread_impl.h"
#include "third_party/WebKit/public/platform/WebMediaStream.h"
#include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
-#include "third_party/WebKit/public/platform/WebURL.h"
-#include "third_party/WebKit/public/web/WebMediaStreamRegistry.h"
-#include "url/gurl.h"
+#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
namespace content {
@@ -35,99 +34,60 @@ blink::WebString MakeTrackId() {
bool AddVideoTrackToMediaStream(scoped_ptr<media::VideoCapturerSource> source,
bool is_remote,
bool is_readonly,
- const std::string& media_stream_url) {
- blink::WebMediaStream web_stream =
- blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(
- GURL(media_stream_url));
- return AddVideoTrackToMediaStream(std::move(source), is_remote, is_readonly,
- &web_stream);
-}
-
-bool AddVideoTrackToMediaStream(scoped_ptr<media::VideoCapturerSource> source,
- bool is_remote,
- bool is_readonly,
blink::WebMediaStream* web_stream) {
- if (web_stream->isNull()) {
- DLOG(ERROR) << "Stream not found";
- return false;
- }
+ DCHECK(source.get());
+ DCHECK(web_stream);
+ DCHECK(!web_stream->isNull());
+
const blink::WebString track_id = MakeTrackId();
blink::WebMediaStreamSource webkit_source;
- scoped_ptr<MediaStreamVideoSource> media_stream_source(
+ MediaStreamVideoSource* const media_stream_source =
new MediaStreamVideoCapturerSource(
- MediaStreamSource::SourceStoppedCallback(), std::move(source)));
+ MediaStreamSource::SourceStoppedCallback(), std::move(source));
webkit_source.initialize(track_id, blink::WebMediaStreamSource::TypeVideo,
track_id, is_remote, is_readonly);
- webkit_source.setExtraData(media_stream_source.get());
+ // Takes ownership of |media_stream_source|.
+ webkit_source.setExtraData(media_stream_source);
blink::WebMediaConstraints constraints;
constraints.initialize();
web_stream->addTrack(MediaStreamVideoTrack::CreateVideoTrack(
- media_stream_source.release(), constraints,
+ media_stream_source, constraints,
MediaStreamVideoSource::ConstraintsCallback(), true));
return true;
}
bool AddAudioTrackToMediaStream(
const scoped_refptr<media::AudioCapturerSource>& source,
- const media::AudioParameters& params,
- bool is_remote,
- bool is_readonly,
- const std::string& media_stream_url) {
- DCHECK(params.IsValid()) << params.AsHumanReadableString();
- blink::WebMediaStream web_stream =
- blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(
- GURL(media_stream_url));
- return AddAudioTrackToMediaStream(source,
- is_remote, is_readonly, &web_stream);
-}
-
-bool AddAudioTrackToMediaStream(
- const scoped_refptr<media::AudioCapturerSource>& source,
+ int sample_rate,
+ media::ChannelLayout channel_layout,
+ int frames_per_buffer,
bool is_remote,
bool is_readonly,
blink::WebMediaStream* web_stream) {
- if (web_stream->isNull()) {
- DLOG(ERROR) << "Stream not found";
- return false;
- }
+ DCHECK(source.get());
+ DCHECK(web_stream);
+ DCHECK(!web_stream->isNull());
- media::AudioParameters params(
- media::AudioParameters::AUDIO_PCM_LINEAR, media::CHANNEL_LAYOUT_STEREO,
- 48000, /* sample rate */
- 16, /* bits per sample */
- 480); /* frames per buffer */
-
- blink::WebMediaStreamSource webkit_source;
+ // Create Blink and Chromium objects to represent the MediaStreamSource.
+ blink::WebMediaStreamSource web_source;
const blink::WebString track_id = MakeTrackId();
- webkit_source.initialize(track_id,
- blink::WebMediaStreamSource::TypeAudio,
- track_id,
- is_remote,
- is_readonly);
-
- MediaStreamAudioSource* audio_source(
- new MediaStreamAudioSource(
- -1,
- StreamDeviceInfo(),
- MediaStreamSource::SourceStoppedCallback(),
- RenderThreadImpl::current()->GetPeerConnectionDependencyFactory()));
-
- blink::WebMediaConstraints constraints;
- constraints.initialize();
- scoped_refptr<WebRtcAudioCapturer> capturer(
- WebRtcAudioCapturer::CreateCapturer(-1, StreamDeviceInfo(), constraints,
- nullptr, audio_source));
- capturer->SetCapturerSource(source, params);
- audio_source->SetAudioCapturer(capturer);
- webkit_source.setExtraData(audio_source);
-
- blink::WebMediaStreamTrack web_media_audio_track;
- web_media_audio_track.initialize(webkit_source);
- RenderThreadImpl::current()->GetPeerConnectionDependencyFactory()->
- CreateLocalAudioTrack(web_media_audio_track);
+ web_source.initialize(track_id, blink::WebMediaStreamSource::TypeAudio,
+ track_id, is_remote, is_readonly);
+ MediaStreamAudioSource* const audio_source =
+ new ExternalMediaStreamAudioSource(
+ source, sample_rate, channel_layout, frames_per_buffer, is_remote);
+ web_source.setExtraData(audio_source); // Takes ownership of |audio_source|.
+
+ // Create the Blink and Chromium objects to represent the MediaStreamTrack,
+ // and connect the audio source to the track.
+ blink::WebMediaStreamTrack web_track;
+ web_track.initialize(web_source);
+ if (!audio_source->ConnectToTrack(web_track))
+ return false;
- web_stream->addTrack(web_media_audio_track);
+ // Add the MediaStreamTrack to the MediaStream.
+ web_stream->addTrack(web_track);
return true;
}
« no previous file with comments | « content/public/renderer/media_stream_api.h ('k') | content/public/renderer/media_stream_audio_sink.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698