diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.cc | 95 |
1 files changed, 11 insertions, 84 deletions
diff --git a/chromium/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.cc b/chromium/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.cc index b18c345dfd0..44030469910 100644 --- a/chromium/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.cc +++ b/chromium/third_party/blink/renderer/modules/breakout_box/media_stream_track_generator.cc @@ -8,14 +8,12 @@ #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_media_stream_track_generator_init.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" -#include "third_party/blink/renderer/core/streams/readable_stream.h" #include "third_party/blink/renderer/core/streams/writable_stream.h" #include "third_party/blink/renderer/core/streams/writable_stream_transferring_optimizer.h" #include "third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink.h" #include "third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.h" #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source.h" #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source.h" -#include "third_party/blink/renderer/modules/breakout_box/video_track_signal_underlying_source.h" #include "third_party/blink/renderer/modules/mediastream/media_stream_utils.h" #include "third_party/blink/renderer/modules/mediastream/media_stream_video_track.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" @@ -28,18 +26,6 @@ namespace blink { -namespace { - -const wtf_size_t kDefaultMaxSignalBufferSize = 20u; - -class NullUnderlyingSource : public UnderlyingSourceBase { - public: - explicit NullUnderlyingSource(ScriptState* script_state) - : UnderlyingSourceBase(script_state) {} -}; - -} // namespace - MediaStreamTrackGenerator* MediaStreamTrackGenerator::Create( ScriptState* script_state, const String& kind, @@ -62,8 +48,7 @@ MediaStreamTrackGenerator* MediaStreamTrackGenerator::Create( return MakeGarbageCollected<MediaStreamTrackGenerator>( script_state, type, - /*track_id=*/WTF::CreateCanonicalUUIDString(), nullptr, - kDefaultMaxSignalBufferSize); + /*track_id=*/WTF::CreateCanonicalUUIDString()); } MediaStreamTrackGenerator* MediaStreamTrackGenerator::Create( @@ -81,11 +66,6 @@ MediaStreamTrackGenerator* MediaStreamTrackGenerator::Create( return nullptr; } - if (init->hasSignalTarget() && init->signalTarget()->kind() != init->kind()) { - exception_state.ThrowTypeError("kind and signalTarget.kind() do not match"); - return nullptr; - } - MediaStreamSource::StreamType type; if (init->kind() == "video") { type = MediaStreamSource::kTypeVideo; @@ -96,32 +76,24 @@ MediaStreamTrackGenerator* MediaStreamTrackGenerator::Create( return nullptr; } - wtf_size_t max_signal_buffer_size = kDefaultMaxSignalBufferSize; - if (init->hasMaxSignalBufferSize()) - max_signal_buffer_size = init->maxSignalBufferSize(); - return MakeGarbageCollected<MediaStreamTrackGenerator>( script_state, type, - /*track_id=*/WTF::CreateCanonicalUUIDString(), init->signalTarget(), - max_signal_buffer_size); + /*track_id=*/WTF::CreateCanonicalUUIDString()); } MediaStreamTrackGenerator::MediaStreamTrackGenerator( ScriptState* script_state, MediaStreamSource::StreamType type, - const String& track_id, - MediaStreamTrack* signal_target, - wtf_size_t max_signal_buffer_size) + const String& track_id) : MediaStreamTrack( ExecutionContext::From(script_state), MakeGarbageCollected<MediaStreamComponent>( MakeGarbageCollected<MediaStreamSource>(track_id, type, track_id, - /*remote=*/false))), - max_signal_buffer_size_(max_signal_buffer_size) { + /*remote=*/false))) { if (type == MediaStreamSource::kTypeVideo) { - CreateVideoOutputPlatformTrack(signal_target); + CreateVideoOutputPlatformTrack(); } else { DCHECK_EQ(type, MediaStreamSource::kTypeAudio); CreateAudioOutputPlatformTrack(); @@ -142,39 +114,19 @@ WritableStream* MediaStreamTrackGenerator::writable(ScriptState* script_state) { return writable_; } -ReadableStream* MediaStreamTrackGenerator::readableControl( - ScriptState* script_state) { - if (readable_control_) - return readable_control_; - - if (kind() == "video") - CreateVideoControlStream(script_state); - else if (kind() == "audio") - CreateAudioControlStream(script_state); - - return readable_control_; -} - PushableMediaStreamVideoSource* MediaStreamTrackGenerator::PushableVideoSource() const { DCHECK_EQ(Component()->Source()->GetType(), MediaStreamSource::kTypeVideo); return static_cast<PushableMediaStreamVideoSource*>( + GetExecutionContext()->GetTaskRunner(TaskType::kInternalMediaRealTime), MediaStreamVideoSource::GetVideoSource(Component()->Source())); } -void MediaStreamTrackGenerator::CreateVideoOutputPlatformTrack( - MediaStreamTrack* signal_target) { - base::WeakPtr<MediaStreamVideoSource> signal_target_upstream_source; - if (signal_target) { - MediaStreamVideoSource* upstream_source = - MediaStreamVideoSource::GetVideoSource( - signal_target->Component()->Source()); - signal_target_upstream_source = upstream_source->GetWeakPtr(); - } - +void MediaStreamTrackGenerator::CreateVideoOutputPlatformTrack() { std::unique_ptr<PushableMediaStreamVideoSource> platform_source = std::make_unique<PushableMediaStreamVideoSource>( - signal_target_upstream_source); + GetExecutionContext()->GetTaskRunner( + TaskType::kInternalMediaRealTime)); PushableMediaStreamVideoSource* platform_source_ptr = platform_source.get(); Component()->Source()->SetPlatformSource(std::move(platform_source)); std::unique_ptr<MediaStreamVideoTrack> platform_track = @@ -218,42 +170,17 @@ void MediaStreamTrackGenerator::CreateAudioStream(ScriptState* script_state) { static_cast<PushableMediaStreamAudioSource*>( Component()->Source()->GetPlatformSource()); audio_underlying_sink_ = - MakeGarbageCollected<MediaStreamAudioTrackUnderlyingSink>(source); + MakeGarbageCollected<MediaStreamAudioTrackUnderlyingSink>( + source->GetBroker()); writable_ = WritableStream::CreateWithCountQueueingStrategy( script_state, audio_underlying_sink_, /*high_water_mark=*/1, audio_underlying_sink_->GetTransferringOptimizer()); } -void MediaStreamTrackGenerator::CreateVideoControlStream( - ScriptState* script_state) { - DCHECK(!readable_control_); - // TODO(crbug.com/1142955): Make the queue size configurable from the - // constructor. - control_underlying_source_ = - MakeGarbageCollected<VideoTrackSignalUnderlyingSource>( - script_state, this, max_signal_buffer_size_); - readable_control_ = ReadableStream::CreateWithCountQueueingStrategy( - script_state, control_underlying_source_, /*high_water_mark=*/0); -} - -void MediaStreamTrackGenerator::CreateAudioControlStream( - ScriptState* script_state) { - DCHECK(!readable_control_); - // Since no signals have been defined for audio, use a null source that - // does nothing, so that a valid stream can be returned for audio - // MediaStreamTrackGenerators. - control_underlying_source_ = - MakeGarbageCollected<NullUnderlyingSource>(script_state); - readable_control_ = ReadableStream::CreateWithCountQueueingStrategy( - script_state, control_underlying_source_, /*high_water_mark=*/0); -} - void MediaStreamTrackGenerator::Trace(Visitor* visitor) const { visitor->Trace(video_underlying_sink_); visitor->Trace(audio_underlying_sink_); visitor->Trace(writable_); - visitor->Trace(control_underlying_source_); - visitor->Trace(readable_control_); MediaStreamTrack::Trace(visitor); } |