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

Unified Diff: media/test/pipeline_integration_test_base.cc

Issue 2684103005: Allow media track switching. (Closed)
Patch Set: Fixed comments Created 3 years, 8 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 | « media/test/pipeline_integration_test_base.h ('k') | media/video/gpu_memory_buffer_video_frame_pool.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/test/pipeline_integration_test_base.cc
diff --git a/media/test/pipeline_integration_test_base.cc b/media/test/pipeline_integration_test_base.cc
index 6a8b8f7283a9fb085a7b4e0f3c34950ac44720fb..dc5f0858e780ef27062484f58b7718581e99676c 100644
--- a/media/test/pipeline_integration_test_base.cc
+++ b/media/test/pipeline_integration_test_base.cc
@@ -135,8 +135,8 @@ PipelineStatus PipelineIntegrationTestBase::StartInternal(
std::unique_ptr<DataSource> data_source,
CdmContext* cdm_context,
uint8_t test_type,
- ScopedVector<VideoDecoder> prepend_video_decoders,
- ScopedVector<AudioDecoder> prepend_audio_decoders) {
+ CreateVideoDecodersCB prepend_video_decoders_cb,
+ CreateAudioDecodersCB prepend_audio_decoders_cb) {
hashing_enabled_ = test_type & kHashed;
clockless_playback_ = test_type & kClockless;
@@ -179,10 +179,11 @@ PipelineStatus PipelineIntegrationTestBase::StartInternal(
EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0);
pipeline_->Start(
- demuxer_.get(), CreateRenderer(std::move(prepend_video_decoders),
- std::move(prepend_audio_decoders)),
- this, base::Bind(&PipelineIntegrationTestBase::OnStatusCallback,
- base::Unretained(this)));
+ demuxer_.get(),
+ CreateRenderer(prepend_video_decoders_cb, prepend_audio_decoders_cb),
+ this,
+ base::Bind(&PipelineIntegrationTestBase::OnStatusCallback,
+ base::Unretained(this)));
base::RunLoop().Run();
return pipeline_status_;
}
@@ -191,15 +192,14 @@ PipelineStatus PipelineIntegrationTestBase::StartWithFile(
const std::string& filename,
CdmContext* cdm_context,
uint8_t test_type,
- ScopedVector<VideoDecoder> prepend_video_decoders,
- ScopedVector<AudioDecoder> prepend_audio_decoders) {
+ CreateVideoDecodersCB prepend_video_decoders_cb,
+ CreateAudioDecodersCB prepend_audio_decoders_cb) {
std::unique_ptr<FileDataSource> file_data_source(new FileDataSource());
base::FilePath file_path(GetTestDataFilePath(filename));
CHECK(file_data_source->Initialize(file_path)) << "Is " << file_path.value()
<< " missing?";
return StartInternal(std::move(file_data_source), cdm_context, test_type,
- std::move(prepend_video_decoders),
- std::move(prepend_audio_decoders));
+ prepend_video_decoders_cb, prepend_audio_decoders_cb);
}
PipelineStatus PipelineIntegrationTestBase::Start(const std::string& filename) {
@@ -214,11 +214,10 @@ PipelineStatus PipelineIntegrationTestBase::Start(const std::string& filename,
PipelineStatus PipelineIntegrationTestBase::Start(
const std::string& filename,
uint8_t test_type,
- ScopedVector<VideoDecoder> prepend_video_decoders,
- ScopedVector<AudioDecoder> prepend_audio_decoders) {
- return StartWithFile(filename, nullptr, test_type,
- std::move(prepend_video_decoders),
- std::move(prepend_audio_decoders));
+ CreateVideoDecodersCB prepend_video_decoders_cb,
+ CreateAudioDecodersCB prepend_audio_decoders_cb) {
+ return StartWithFile(filename, nullptr, test_type, prepend_video_decoders_cb,
+ prepend_audio_decoders_cb);
}
PipelineStatus PipelineIntegrationTestBase::Start(const uint8_t* data,
@@ -324,10 +323,15 @@ void PipelineIntegrationTestBase::CreateDemuxer(
#endif
}
-std::unique_ptr<Renderer> PipelineIntegrationTestBase::CreateRenderer(
- ScopedVector<VideoDecoder> prepend_video_decoders,
- ScopedVector<AudioDecoder> prepend_audio_decoders) {
- ScopedVector<VideoDecoder> video_decoders = std::move(prepend_video_decoders);
+ScopedVector<VideoDecoder> CreateVideoDecodersForTest(
+ CreateVideoDecodersCB prepend_video_decoders_cb) {
+ ScopedVector<VideoDecoder> video_decoders;
+
+ if (!prepend_video_decoders_cb.is_null()) {
+ video_decoders = prepend_video_decoders_cb.Run();
+ DCHECK(!video_decoders.empty());
+ }
+
#if !defined(MEDIA_DISABLE_LIBVPX)
video_decoders.push_back(new VpxVideoDecoder());
#endif // !defined(MEDIA_DISABLE_LIBVPX)
@@ -337,7 +341,29 @@ std::unique_ptr<Renderer> PipelineIntegrationTestBase::CreateRenderer(
video_decoders.push_back(
new FFmpegVideoDecoder(make_scoped_refptr(new MediaLog())));
#endif
+ return video_decoders;
+}
+
+ScopedVector<AudioDecoder> CreateAudioDecodersForTest(
+ const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ CreateAudioDecodersCB prepend_audio_decoders_cb) {
+ ScopedVector<AudioDecoder> audio_decoders;
+ if (!prepend_audio_decoders_cb.is_null()) {
+ audio_decoders = prepend_audio_decoders_cb.Run();
+ DCHECK(!audio_decoders.empty());
+ }
+
+#if !defined(MEDIA_DISABLE_FFMPEG)
+ audio_decoders.push_back(
+ new FFmpegAudioDecoder(media_task_runner, new MediaLog()));
+#endif
+ return audio_decoders;
+}
+
+std::unique_ptr<Renderer> PipelineIntegrationTestBase::CreateRenderer(
+ CreateVideoDecodersCB prepend_video_decoders_cb,
+ CreateAudioDecodersCB prepend_audio_decoders_cb) {
// Simulate a 60Hz rendering sink.
video_sink_.reset(new NullVideoSink(
clockless_playback_, base::TimeDelta::FromSecondsD(1.0 / 60),
@@ -348,15 +374,9 @@ std::unique_ptr<Renderer> PipelineIntegrationTestBase::CreateRenderer(
// Disable frame dropping if hashing is enabled.
std::unique_ptr<VideoRenderer> video_renderer(new VideoRendererImpl(
message_loop_.task_runner(), message_loop_.task_runner().get(),
- video_sink_.get(), std::move(video_decoders), false, nullptr,
- new MediaLog()));
-
- ScopedVector<AudioDecoder> audio_decoders = std::move(prepend_audio_decoders);
-
-#if !defined(MEDIA_DISABLE_FFMPEG)
- audio_decoders.push_back(
- new FFmpegAudioDecoder(message_loop_.task_runner(), new MediaLog()));
-#endif
+ video_sink_.get(),
+ base::Bind(&CreateVideoDecodersForTest, prepend_video_decoders_cb), false,
+ nullptr, new MediaLog()));
if (!clockless_playback_) {
audio_sink_ = new NullAudioSink(message_loop_.task_runner());
@@ -376,7 +396,9 @@ std::unique_ptr<Renderer> PipelineIntegrationTestBase::CreateRenderer(
(clockless_playback_)
? static_cast<AudioRendererSink*>(clockless_audio_sink_.get())
: audio_sink_.get(),
- std::move(audio_decoders), new MediaLog()));
+ base::Bind(&CreateAudioDecodersForTest, message_loop_.task_runner(),
+ prepend_audio_decoders_cb),
+ new MediaLog()));
if (hashing_enabled_) {
if (clockless_playback_)
clockless_audio_sink_->StartAudioHashForTesting();
« no previous file with comments | « media/test/pipeline_integration_test_base.h ('k') | media/video/gpu_memory_buffer_video_frame_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698