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

Unified Diff: media/base/android/media_decoder_job.cc

Issue 623363002: Send metadata change to renderer after decoder is drained (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix clang build Created 6 years, 2 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/base/android/media_decoder_job.h ('k') | media/base/android/media_source_player.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/android/media_decoder_job.cc
diff --git a/media/base/android/media_decoder_job.cc b/media/base/android/media_decoder_job.cc
index ed2216a5f859eaeb9ef5d2325cc5a05312c48a5b..2ab5db0069b4e4cc6e8e1d106b417563fb487388 100644
--- a/media/base/android/media_decoder_job.cc
+++ b/media/base/android/media_decoder_job.cc
@@ -202,13 +202,6 @@ void MediaDecoderJob::ReleaseDecoderResources() {
release_resources_pending_ = true;
}
-bool MediaDecoderJob::SetDemuxerConfigs(const DemuxerConfigs& configs) {
- bool config_changed = AreDemuxerConfigsChanged(configs);
- if (config_changed)
- UpdateDemuxerConfigs(configs);
- return config_changed;
-}
-
base::android::ScopedJavaLocalRef<jobject> MediaDecoderJob::GetMediaCrypto() {
base::android::ScopedJavaLocalRef<jobject> media_crypto;
if (drm_bridge_)
@@ -334,19 +327,18 @@ void MediaDecoderJob::DecodeCurrentAccessUnit(
int index = CurrentReceivedDataChunkIndex();
const DemuxerConfigs& configs = received_data_[index].demuxer_configs[0];
bool reconfigure_needed = IsCodecReconfigureNeeded(configs);
- // TODO(qinmin): |config_changed_cb_| should be run after draining finishes.
- // http://crbug.com/381975.
- if (SetDemuxerConfigs(configs))
- config_changed_cb_.Run();
+ SetDemuxerConfigs(configs);
if (!drain_decoder_) {
// If we haven't decoded any data yet, just skip the current access unit
// and request the MediaCodec to be recreated on next Decode().
if (skip_eos_enqueue_ || !reconfigure_needed) {
need_to_reconfig_decoder_job_ =
need_to_reconfig_decoder_job_ || reconfigure_needed;
+ // Report MEDIA_CODEC_OK status so decoder will continue decoding and
+ // MEDIA_CODEC_OUTPUT_FORMAT_CHANGED status will come later.
ui_task_runner_->PostTask(FROM_HERE, base::Bind(
&MediaDecoderJob::OnDecodeCompleted, base::Unretained(this),
- MEDIA_CODEC_OUTPUT_FORMAT_CHANGED, kNoTimestamp(), kNoTimestamp()));
+ MEDIA_CODEC_OK, kNoTimestamp(), kNoTimestamp()));
return;
}
// Start draining the decoder so that all the remaining frames are
@@ -542,6 +534,9 @@ void MediaDecoderJob::OnDecodeCompleted(
status = MEDIA_CODEC_OK;
}
+ if (status == MEDIA_CODEC_OUTPUT_FORMAT_CHANGED && UpdateOutputFormat())
+ config_changed_cb_.Run();
+
if (release_resources_pending_) {
ReleaseMediaCodecBridge();
release_resources_pending_ = false;
@@ -643,6 +638,10 @@ bool MediaDecoderJob::IsCodecReconfigureNeeded(
return true;
}
+bool MediaDecoderJob::UpdateOutputFormat() {
+ return false;
+}
+
void MediaDecoderJob::ReleaseMediaCodecBridge() {
if (!media_codec_bridge_)
return;
« no previous file with comments | « media/base/android/media_decoder_job.h ('k') | media/base/android/media_source_player.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698