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

Unified Diff: media/filters/pipeline_integration_test_base.cc

Issue 23702007: Render inband text tracks in the media pipeline (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 4 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/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;

Powered by Google App Engine
This is Rietveld 408576698