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

Unified Diff: media/renderers/renderer_impl.cc

Issue 2491043003: MediaResource refactoring to support multiple streams (Closed)
Patch Set: rebase Created 3 years, 11 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
Index: media/renderers/renderer_impl.cc
diff --git a/media/renderers/renderer_impl.cc b/media/renderers/renderer_impl.cc
index 5e99061138485fd732b5012ee1e561f22cd0e01f..cec26bcb655eea604b1c9f762cfd7414c816f2c4 100644
--- a/media/renderers/renderer_impl.cc
+++ b/media/renderers/renderer_impl.cc
@@ -17,8 +17,8 @@
#include "media/base/audio_decoder_config.h"
#include "media/base/audio_renderer.h"
#include "media/base/bind_to_current_loop.h"
-#include "media/base/demuxer_stream_provider.h"
#include "media/base/media_log.h"
+#include "media/base/media_resource.h"
#include "media/base/media_switches.h"
#include "media/base/renderer_client.h"
#include "media/base/time_source.h"
@@ -129,7 +129,7 @@ RendererImpl::~RendererImpl() {
}
}
-void RendererImpl::Initialize(DemuxerStreamProvider* demuxer_stream_provider,
+void RendererImpl::Initialize(MediaResource* media_resource,
RendererClient* client,
const PipelineStatusCB& init_cb) {
DVLOG(1) << __func__;
@@ -139,7 +139,7 @@ void RendererImpl::Initialize(DemuxerStreamProvider* demuxer_stream_provider,
DCHECK(client);
client_ = client;
- demuxer_stream_provider_ = demuxer_stream_provider;
+ media_resource_ = media_resource;
init_cb_ = init_cb;
if (HasEncryptedStream() && !cdm_context_) {
@@ -350,15 +350,16 @@ bool RendererImpl::GetWallClockTimes(
}
bool RendererImpl::HasEncryptedStream() {
- DemuxerStream* audio_stream =
- demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO);
- if (audio_stream && audio_stream->audio_decoder_config().is_encrypted())
- return true;
+ std::vector<DemuxerStream*> demuxer_streams = media_resource_->GetStreams();
- DemuxerStream* video_stream =
- demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO);
- if (video_stream && video_stream->video_decoder_config().is_encrypted())
- return true;
+ for (const auto& s : demuxer_streams) {
+ if (s->type() == DemuxerStream::AUDIO &&
+ s->audio_decoder_config().is_encrypted())
+ return true;
+ if (s->type() == DemuxerStream::VIDEO &&
+ s->video_decoder_config().is_encrypted())
+ return true;
+ }
return false;
}
@@ -381,8 +382,14 @@ void RendererImpl::InitializeAudioRenderer() {
PipelineStatusCB done_cb =
base::Bind(&RendererImpl::OnAudioRendererInitializeDone, weak_this_);
- DemuxerStream* audio_stream =
- demuxer_stream_provider_->GetStream(DemuxerStream::AUDIO);
+ std::vector<DemuxerStream*> streams = media_resource_->GetStreams();
+ DemuxerStream* audio_stream = nullptr;
+ for (const auto& s : streams) {
+ if (s->type() == DemuxerStream::AUDIO && s->enabled()) {
+ audio_stream = s;
+ break;
+ }
+ }
if (!audio_stream) {
audio_renderer_.reset();
task_runner_->PostTask(FROM_HERE, base::Bind(done_cb, PIPELINE_OK));
@@ -430,8 +437,15 @@ void RendererImpl::InitializeVideoRenderer() {
PipelineStatusCB done_cb =
base::Bind(&RendererImpl::OnVideoRendererInitializeDone, weak_this_);
- DemuxerStream* video_stream =
- demuxer_stream_provider_->GetStream(DemuxerStream::VIDEO);
+ std::vector<DemuxerStream*> streams = media_resource_->GetStreams();
+ DemuxerStream* video_stream = nullptr;
+ for (const auto& s : streams) {
+ if (s->type() == DemuxerStream::VIDEO && s->enabled()) {
+ video_stream = s;
+ break;
+ }
+ }
+
if (!video_stream) {
video_renderer_.reset();
task_runner_->PostTask(FROM_HERE, base::Bind(done_cb, PIPELINE_OK));

Powered by Google App Engine
This is Rietveld 408576698