Skip to content

Commit

Permalink
Remove support for inline text tracks
Browse files Browse the repository at this point in the history
inline text tracks are currently hidden behind a feature flag and is
almost completely unused, so this CL removes the flag as well as all
behavior that would be enabled by its use.

Bug: 826419
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: Ide06bcde063ec57898e3129c28550929fa4104ea
Reviewed-on: https://chromium-review.googlesource.com/1058930
Reviewed-by: Kenneth MacKay <kmackay@chromium.org>
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#562080}
  • Loading branch information
tmathmeyer authored and Commit Bot committed May 26, 2018
1 parent 16ed078 commit 4ca53de
Show file tree
Hide file tree
Showing 25 changed files with 101 additions and 892 deletions.
8 changes: 1 addition & 7 deletions chromecast/media/cma/test/frame_segmenter_for_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -292,11 +292,6 @@ class FakeDemuxerHost : public ::media::DemuxerHost {
void OnDemuxerError(::media::PipelineStatus error) override {
LOG(FATAL) << "OnDemuxerError: " << error;
}
void AddTextStream(::media::DemuxerStream* text_stream,
const ::media::TextTrackConfig& config) override {
}
void RemoveTextStream(::media::DemuxerStream* text_stream) override {
}
};

DemuxResult::DemuxResult() {
Expand All @@ -319,8 +314,7 @@ DemuxResult FFmpegDemuxForTest(const base::FilePath& filepath,
base::Bind(&OnEncryptedMediaInitData),
base::Bind(&OnMediaTracksUpdated), &media_log);
::media::WaitableMessageLoopEvent init_event;
demuxer.Initialize(&fake_demuxer_host, init_event.GetPipelineStatusCB(),
false);
demuxer.Initialize(&fake_demuxer_host, init_event.GetPipelineStatusCB());
init_event.RunAndWaitForStatus(::media::PIPELINE_OK);

auto stream_type =
Expand Down
1 change: 0 additions & 1 deletion content/browser/renderer_host/render_process_host_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2701,7 +2701,6 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
switches::kEnableGPUServiceLogging,
switches::kEnableLowResTiling,
switches::kEnableMediaSuspend,
switches::kEnableInbandTextTracks,
switches::kEnableLCDText,
switches::kEnableLogging,
switches::kEnableNetworkInformationDownlinkMax,
Expand Down
1 change: 0 additions & 1 deletion content/shell/app/shell_main_delegate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,6 @@ bool ShellMainDelegate::BasicStartupComplete(int* exit_code) {
command_line.AppendSwitch(cc::switches::kDisableCheckerImaging);
}

command_line.AppendSwitch(switches::kEnableInbandTextTracks);
command_line.AppendSwitch(switches::kMuteAudio);

command_line.AppendSwitch(switches::kEnablePreciseMemoryInfo);
Expand Down
11 changes: 1 addition & 10 deletions media/base/demuxer.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@

namespace media {

class TextTrackConfig;
class MediaTracks;

class MEDIA_EXPORT DemuxerHost {
Expand All @@ -48,13 +47,6 @@ class MEDIA_EXPORT DemuxerHost {
// called with an error.
virtual void OnDemuxerError(PipelineStatus error) = 0;

// Add |text_stream| to the collection managed by the text renderer.
virtual void AddTextStream(DemuxerStream* text_stream,
const TextTrackConfig& config) = 0;

// Remove |text_stream| from the presentation.
virtual void RemoveTextStream(DemuxerStream* text_stream) = 0;

protected:
virtual ~DemuxerHost();
};
Expand Down Expand Up @@ -92,8 +84,7 @@ class MEDIA_EXPORT Demuxer : public MediaResource {
// lifetime of the demuxer. Don't delete it! |status_cb| must only be run
// after this method has returned.
virtual void Initialize(DemuxerHost* host,
const PipelineStatusCB& status_cb,
bool enable_text_tracks) = 0;
const PipelineStatusCB& status_cb) = 0;

// Aborts any pending read operations that the demuxer is involved with; any
// read aborted will be aborted with a status of kAborted. Future reads will
Expand Down
3 changes: 0 additions & 3 deletions media/base/media_switches.cc
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,6 @@ const char kUseFileForFakeAudioCapture[] = "use-file-for-fake-audio-capture";
// accelerator hardware to be present.
const char kUseFakeJpegDecodeAccelerator[] = "use-fake-jpeg-decode-accelerator";

// Enables support for inband text tracks in media content.
const char kEnableInbandTextTracks[] = "enable-inband-text-tracks";

// When running tests on a system without the required hardware or libraries,
// this flag will cause the tests to fail. Otherwise, they silently succeed.
const char kRequireAudioHardwareForTesting[] =
Expand Down
2 changes: 0 additions & 2 deletions media/base/media_switches.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,6 @@ MEDIA_EXPORT extern const char kUseFileForFakeVideoCapture[];
MEDIA_EXPORT extern const char kUseFileForFakeAudioCapture[];
MEDIA_EXPORT extern const char kUseFakeJpegDecodeAccelerator[];

MEDIA_EXPORT extern const char kEnableInbandTextTracks[];

MEDIA_EXPORT extern const char kRequireAudioHardwareForTesting[];
MEDIA_EXPORT extern const char kMuteAudio[];

Expand Down
3 changes: 1 addition & 2 deletions media/base/media_url_demuxer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@ std::string MediaUrlDemuxer::GetDisplayName() const {
}

void MediaUrlDemuxer::Initialize(DemuxerHost* host,
const PipelineStatusCB& status_cb,
bool enable_text_tracks) {
const PipelineStatusCB& status_cb) {
DVLOG(1) << __func__;
task_runner_->PostTask(FROM_HERE, base::Bind(status_cb, PIPELINE_OK));
}
Expand Down
3 changes: 1 addition & 2 deletions media/base/media_url_demuxer.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ class MEDIA_EXPORT MediaUrlDemuxer : public Demuxer {
// Demuxer interface.
std::string GetDisplayName() const override;
void Initialize(DemuxerHost* host,
const PipelineStatusCB& status_cb,
bool enable_text_tracks) override;
const PipelineStatusCB& status_cb) override;
void StartWaitingForSeek(base::TimeDelta seek_time) override;
void CancelPendingSeek(base::TimeDelta seek_time) override;
void Seek(base::TimeDelta time, const PipelineStatusCB& status_cb) override;
Expand Down
3 changes: 1 addition & 2 deletions media/base/media_url_demuxer_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,7 @@ TEST_F(MediaUrlDemuxerTest, InitializeReturnsPipelineOk) {
InitializeTest();
demuxer_->Initialize(nullptr,
base::Bind(&MediaUrlDemuxerTest::VerifyCallbackOk,
base::Unretained(this)),
false);
base::Unretained(this)));

base::RunLoop().RunUntilIdle();
}
Expand Down
3 changes: 0 additions & 3 deletions media/base/mock_demuxer_host.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@ class MockDemuxerHost : public DemuxerHost {
void(const Ranges<base::TimeDelta>&));
MOCK_METHOD1(SetDuration, void(base::TimeDelta duration));
MOCK_METHOD1(OnDemuxerError, void(PipelineStatus error));
MOCK_METHOD2(AddTextStream, void(DemuxerStream*,
const TextTrackConfig&));
MOCK_METHOD1(RemoveTextStream, void(DemuxerStream*));

private:
DISALLOW_COPY_AND_ASSIGN(MockDemuxerHost);
Expand Down
3 changes: 1 addition & 2 deletions media/base/mock_filters.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,7 @@ class MockDemuxer : public Demuxer {

// Demuxer implementation.
std::string GetDisplayName() const override;
MOCK_METHOD3(Initialize,
void(DemuxerHost* host, const PipelineStatusCB& cb, bool));
MOCK_METHOD2(Initialize, void(DemuxerHost* host, const PipelineStatusCB& cb));
MOCK_METHOD1(StartWaitingForSeek, void(base::TimeDelta));
MOCK_METHOD1(CancelPendingSeek, void(base::TimeDelta));
MOCK_METHOD2(Seek, void(base::TimeDelta time, const PipelineStatusCB& cb));
Expand Down
114 changes: 2 additions & 112 deletions media/base/pipeline_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ class PipelineImpl::RendererWrapper : public DemuxerHost,
void Start(StartType start_type,
Demuxer* demuxer,
std::unique_ptr<Renderer> renderer,
std::unique_ptr<TextRenderer> text_renderer,
base::WeakPtr<PipelineImpl> weak_pipeline);
void Stop(const base::Closure& stop_cb);
void Seek(base::TimeDelta time);
Expand Down Expand Up @@ -122,9 +121,6 @@ class PipelineImpl::RendererWrapper : public DemuxerHost,
void OnBufferedTimeRangesChanged(const Ranges<base::TimeDelta>& ranges) final;
void SetDuration(base::TimeDelta duration) final;
void OnDemuxerError(PipelineStatus error) final;
void AddTextStream(DemuxerStream* text_stream,
const TextTrackConfig& config) final;
void RemoveTextStream(DemuxerStream* text_stream) final;

// RendererClient implementation.
void OnError(PipelineStatus error) final;
Expand All @@ -138,12 +134,6 @@ class PipelineImpl::RendererWrapper : public DemuxerHost,
void OnVideoOpacityChange(bool opaque) final;
void OnDurationChange(base::TimeDelta duration) final;

// TextRenderer tasks and notifications.
void OnTextRendererEnded();
void AddTextStreamTask(DemuxerStream* text_stream,
const TextTrackConfig& config);
void RemoveTextStreamTask(DemuxerStream* text_stream);

// Common handlers for notifications from renderers and demuxer.
void OnPipelineError(PipelineStatus error);
void OnCdmAttached(const CdmAttachedCB& cdm_attached_cb,
Expand All @@ -166,7 +156,6 @@ class PipelineImpl::RendererWrapper : public DemuxerHost,

base::WeakPtr<PipelineImpl> weak_pipeline_;
Demuxer* demuxer_;
std::unique_ptr<TextRenderer> text_renderer_;
double playback_rate_;
float volume_;
CdmContext* cdm_context_;
Expand Down Expand Up @@ -232,7 +221,6 @@ void PipelineImpl::RendererWrapper::Start(
StartType start_type,
Demuxer* demuxer,
std::unique_ptr<Renderer> renderer,
std::unique_ptr<TextRenderer> text_renderer,
base::WeakPtr<PipelineImpl> weak_pipeline) {
DCHECK(media_task_runner_->BelongsToCurrentThread());
DCHECK(state_ == kCreated || state_ == kStopped)
Expand All @@ -245,19 +233,13 @@ void PipelineImpl::RendererWrapper::Start(

DCHECK(!demuxer_);
DCHECK(!shared_state_.renderer);
DCHECK(!text_renderer_);
DCHECK(!renderer_ended_);
DCHECK(!text_renderer_ended_);
demuxer_ = demuxer;
{
base::AutoLock auto_lock(shared_state_lock_);
shared_state_.renderer = std::move(renderer);
}
text_renderer_ = std::move(text_renderer);
if (text_renderer_) {
text_renderer_->Initialize(
base::Bind(&RendererWrapper::OnTextRendererEnded, weak_this_));
}
weak_pipeline_ = weak_pipeline;

// Queue asynchronous actions required to start.
Expand Down Expand Up @@ -300,7 +282,6 @@ void PipelineImpl::RendererWrapper::Stop(const base::Closure& stop_cb) {
pending_callbacks_.reset();

DestroyRenderer();
text_renderer_.reset();

if (demuxer_) {
demuxer_->Stop();
Expand Down Expand Up @@ -346,22 +327,12 @@ void PipelineImpl::RendererWrapper::Seek(base::TimeDelta time) {
// Abort any reads the renderer may be blocked on.
demuxer_->AbortPendingReads();

// Pause.
if (text_renderer_) {
bound_fns.Push(base::Bind(&TextRenderer::Pause,
base::Unretained(text_renderer_.get())));
}

// Flush.
DCHECK(shared_state_.renderer);
bound_fns.Push(base::Bind(&Renderer::Flush,
base::Unretained(shared_state_.renderer.get())));

if (text_renderer_) {
bound_fns.Push(base::Bind(&TextRenderer::Flush,
base::Unretained(text_renderer_.get())));
}

// Seek demuxer.
bound_fns.Push(
base::Bind(&Demuxer::Seek, base::Unretained(demuxer_), seek_timestamp));
Expand Down Expand Up @@ -398,11 +369,6 @@ void PipelineImpl::RendererWrapper::Suspend() {
// Queue the asynchronous actions required to stop playback.
SerialRunner::Queue fns;

if (text_renderer_) {
fns.Push(base::Bind(&TextRenderer::Pause,
base::Unretained(text_renderer_.get())));
}

// No need to flush the renderer since it's going to be destroyed.
pending_callbacks_ = SerialRunner::Run(
fns, base::Bind(&RendererWrapper::CompleteSuspend, weak_this_));
Expand Down Expand Up @@ -547,25 +513,6 @@ void PipelineImpl::RendererWrapper::OnDemuxerError(PipelineStatus error) {
base::Bind(&RendererWrapper::OnPipelineError, weak_this_, error));
}

void PipelineImpl::RendererWrapper::AddTextStream(
DemuxerStream* text_stream,
const TextTrackConfig& config) {
// TODO(alokp): Add thread DCHECK after ensuring that all Demuxer
// implementations call DemuxerHost on the media thread.
media_task_runner_->PostTask(
FROM_HERE, base::Bind(&RendererWrapper::AddTextStreamTask, weak_this_,
text_stream, config));
}

void PipelineImpl::RendererWrapper::RemoveTextStream(
DemuxerStream* text_stream) {
// TODO(alokp): Add thread DCHECK after ensuring that all Demuxer
// implementations call DemuxerHost on the media thread.
media_task_runner_->PostTask(
FROM_HERE, base::Bind(&RendererWrapper::RemoveTextStreamTask, weak_this_,
text_stream));
}

void PipelineImpl::RendererWrapper::OnError(PipelineStatus error) {
DCHECK(media_task_runner_->BelongsToCurrentThread());

Expand Down Expand Up @@ -810,37 +757,6 @@ void PipelineImpl::RendererWrapper::OnDurationChange(base::TimeDelta duration) {
SetDuration(duration);
}

void PipelineImpl::RendererWrapper::OnTextRendererEnded() {
DCHECK(media_task_runner_->BelongsToCurrentThread());
media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::TEXT_ENDED));

if (state_ != kPlaying)
return;

DCHECK(!text_renderer_ended_);
text_renderer_ended_ = true;
CheckPlaybackEnded();
}

void PipelineImpl::RendererWrapper::AddTextStreamTask(
DemuxerStream* text_stream,
const TextTrackConfig& config) {
DCHECK(media_task_runner_->BelongsToCurrentThread());

// TODO(matthewjheaney): fix up text_ended_ when text stream
// is added (http://crbug.com/321446).
if (text_renderer_)
text_renderer_->AddTextStream(text_stream, config);
}

void PipelineImpl::RendererWrapper::RemoveTextStreamTask(
DemuxerStream* text_stream) {
DCHECK(media_task_runner_->BelongsToCurrentThread());

if (text_renderer_)
text_renderer_->RemoveTextStream(text_stream);
}

void PipelineImpl::RendererWrapper::OnPipelineError(PipelineStatus error) {
DCHECK(media_task_runner_->BelongsToCurrentThread());
DCHECK_NE(PIPELINE_OK, error) << "PIPELINE_OK isn't an error!";
Expand Down Expand Up @@ -882,9 +798,6 @@ void PipelineImpl::RendererWrapper::CheckPlaybackEnded() {
if (shared_state_.renderer && !renderer_ended_)
return;

if (text_renderer_ && text_renderer_->HasTracks() && !text_renderer_ended_)
return;

DCHECK_EQ(status_, PIPELINE_OK);
main_task_runner_->PostTask(
FROM_HERE, base::Bind(&PipelineImpl::OnEnded, weak_pipeline_));
Expand Down Expand Up @@ -924,9 +837,6 @@ void PipelineImpl::RendererWrapper::CompleteSeek(base::TimeDelta seek_time,
shared_state_.suspend_timestamp = kNoTimestamp;
}

if (text_renderer_)
text_renderer_->StartPlaying();

shared_state_.renderer->SetPlaybackRate(playback_rate_);
shared_state_.renderer->SetVolume(volume_);

Expand Down Expand Up @@ -967,7 +877,7 @@ void PipelineImpl::RendererWrapper::InitializeDemuxer(
const PipelineStatusCB& done_cb) {
DCHECK(media_task_runner_->BelongsToCurrentThread());

demuxer_->Initialize(this, done_cb, !!text_renderer_);
demuxer_->Initialize(this, done_cb);
}

void PipelineImpl::RendererWrapper::InitializeRenderer(
Expand Down Expand Up @@ -1114,21 +1024,11 @@ void PipelineImpl::Start(StartType start_type,
last_media_time_ = base::TimeDelta();
seek_time_ = kNoTimestamp;

std::unique_ptr<TextRenderer> text_renderer;
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableInbandTextTracks)) {
text_renderer.reset(new TextRenderer(
media_task_runner_,
BindToCurrentLoop(base::Bind(&PipelineImpl::OnAddTextTrack,
weak_factory_.GetWeakPtr()))));
}

media_task_runner_->PostTask(
FROM_HERE,
base::Bind(&RendererWrapper::Start,
base::Unretained(renderer_wrapper_.get()), start_type, demuxer,
base::Passed(&renderer), base::Passed(&text_renderer),
weak_factory_.GetWeakPtr()));
base::Passed(&renderer), weak_factory_.GetWeakPtr()));
}

void PipelineImpl::Stop() {
Expand Down Expand Up @@ -1427,16 +1327,6 @@ void PipelineImpl::OnDurationChange(base::TimeDelta duration) {
client_->OnDurationChange();
}

void PipelineImpl::OnAddTextTrack(const TextTrackConfig& config,
const AddTextTrackDoneCB& done_cb) {
DVLOG(2) << __func__;
DCHECK(thread_checker_.CalledOnValidThread());
DCHECK(IsRunning());

DCHECK(client_);
client_->OnAddTextTrack(config, done_cb);
}

void PipelineImpl::OnWaitingForDecryptionKey() {
DVLOG(2) << __func__;
DCHECK(thread_checker_.CalledOnValidThread());
Expand Down
2 changes: 0 additions & 2 deletions media/base/pipeline_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,6 @@ class MEDIA_EXPORT PipelineImpl : public Pipeline {
void OnMetadata(PipelineMetadata metadata);
void OnBufferingStateChange(BufferingState state);
void OnDurationChange(base::TimeDelta duration);
void OnAddTextTrack(const TextTrackConfig& config,
const AddTextTrackDoneCB& done_cb);
void OnWaitingForDecryptionKey();
void OnAudioConfigChange(const AudioDecoderConfig& config);
void OnVideoConfigChange(const VideoDecoderConfig& config);
Expand Down
Loading

0 comments on commit 4ca53de

Please sign in to comment.