| Index: media/filters/pipeline_integration_test_base.cc
|
| diff --git a/media/filters/pipeline_integration_test_base.cc b/media/filters/pipeline_integration_test_base.cc
|
| index 3f0910a2b8b2a4180573d4aefc609cfa5b8ed6a9..1bcaab9a93d314fac5ec9937106f0b968e4872df 100644
|
| --- a/media/filters/pipeline_integration_test_base.cc
|
| +++ b/media/filters/pipeline_integration_test_base.cc
|
| @@ -11,9 +11,11 @@
|
| #include "media/filters/chunk_demuxer.h"
|
| #include "media/filters/ffmpeg_audio_decoder.h"
|
| #include "media/filters/ffmpeg_demuxer.h"
|
| +#include "media/filters/ffmpeg_text_decoder.h"
|
| #include "media/filters/ffmpeg_video_decoder.h"
|
| #include "media/filters/file_data_source.h"
|
| #include "media/filters/opus_audio_decoder.h"
|
| +#include "media/filters/text_renderer_impl.h"
|
| #include "media/filters/vpx_video_decoder.h"
|
|
|
| using ::testing::AnyNumber;
|
| @@ -71,6 +73,20 @@ void PipelineIntegrationTestBase::DemuxerNeedKeyCB(
|
| need_key_cb_.Run(std::string(), type, init_data);
|
| }
|
|
|
| +void PipelineIntegrationTestBase::OnFFmpegTextTrackCB(
|
| + media::TextKind kind,
|
| + const std::string& label,
|
| + const std::string& language,
|
| + int index) {
|
| + EXPECT_GE(index, 0);
|
| +
|
| + typedef std::pair<TextTracks::iterator, bool> result_t;
|
| + result_t result = ffmpeg_text_tracks_.insert(index);
|
| + EXPECT_TRUE(result.second);
|
| + ASSERT_NE(result.first, ffmpeg_text_tracks_.end());
|
| + EXPECT_EQ(*result.first, index);
|
| +}
|
| +
|
| void PipelineIntegrationTestBase::OnEnded() {
|
| DCHECK(!ended_);
|
| ended_ = true;
|
| @@ -212,10 +228,14 @@ PipelineIntegrationTestBase::CreateFilterCollection(
|
|
|
| Demuxer::NeedKeyCB need_key_cb = base::Bind(
|
| &PipelineIntegrationTestBase::DemuxerNeedKeyCB, base::Unretained(this));
|
| + media::FFmpegAddTextTrackCB add_text_track_cb = base::Bind(
|
| + &PipelineIntegrationTestBase::OnFFmpegTextTrackCB,
|
| + base::Unretained(this));
|
| scoped_ptr<Demuxer> demuxer(
|
| new FFmpegDemuxer(message_loop_.message_loop_proxy(),
|
| data_source_.get(),
|
| need_key_cb,
|
| + add_text_track_cb,
|
| new MediaLog()));
|
| return CreateFilterCollection(demuxer.Pass(), decryptor);
|
| }
|
| @@ -280,6 +300,17 @@ PipelineIntegrationTestBase::CreateFilterCollection(
|
| scoped_ptr<AudioRenderer> audio_renderer(audio_renderer_impl);
|
| collection->SetAudioRenderer(audio_renderer.Pass());
|
|
|
| + scoped_ptr<TextDecoder> text_decoder(
|
| + new FFmpegTextDecoder(message_loop_.message_loop_proxy()));
|
| +
|
| + scoped_ptr<TextRenderer> text_renderer(
|
| + new TextRendererImpl(
|
| + message_loop_.message_loop_proxy(),
|
| + text_decoder.Pass(),
|
| + base::Bind(&PipelineIntegrationTestBase::OnCueReady,
|
| + base::Unretained(this))));
|
| + collection->SetTextRenderer(text_renderer.Pass());
|
| +
|
| return collection.Pass();
|
| }
|
|
|
| @@ -297,6 +328,15 @@ void PipelineIntegrationTestBase::OnVideoRendererPaint(
|
| frame->HashFrameForTesting(&md5_context_);
|
| }
|
|
|
| +void PipelineIntegrationTestBase::OnCueReady(
|
| + int index,
|
| + const scoped_refptr<media::TextBuffer>& text_buffer) {
|
| + EXPECT_GE(index, 0);
|
| +
|
| + TextTracks::iterator it = ffmpeg_text_tracks_.find(index);
|
| + EXPECT_NE(it, ffmpeg_text_tracks_.end());
|
| +}
|
| +
|
| std::string PipelineIntegrationTestBase::GetVideoHash() {
|
| DCHECK(hashing_enabled_);
|
| base::MD5Digest digest;
|
|
|