Index: media/filters/chunk_demuxer.cc |
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc |
index 832caa32459ca84426793a883e5186726684812f..d27f0f9931c2e5dbedadc4bad65ee6927606ee3a 100644 |
--- a/media/filters/chunk_demuxer.cc |
+++ b/media/filters/chunk_demuxer.cc |
@@ -1021,6 +1021,26 @@ void ChunkDemuxer::ReportError_Locked(PipelineStatus error) { |
host_->OnDemuxerError(error); |
} |
+void ChunkDemuxer::ReportMetadata_Locked() const { |
+ DVLOG(1) << __func__; |
+ lock_.AssertAcquired(); |
+ DCHECK_EQ(state_, INITIALIZED); |
+ |
+ PipelineMetadata metadata; |
+ metadata.timeline_offset = timeline_offset_; |
+ if (video_) { |
+ metadata.has_video = true; |
+ metadata.natural_size = video_->video_decoder_config().natural_size(); |
+ metadata.video_rotation = video_->video_rotation(); |
+ } |
+ if (audio_) { |
+ metadata.has_audio = true; |
+ } |
+ |
+ base::AutoUnlock auto_unlock(lock_); |
+ host_->OnMetadata(metadata); |
+} |
+ |
bool ChunkDemuxer::IsSeekWaitingForData_Locked() const { |
lock_.AssertAcquired(); |
for (MediaSourceStateMap::const_iterator itr = source_state_map_.begin(); |
@@ -1102,6 +1122,9 @@ void ChunkDemuxer::OnSourceInitDone( |
// The demuxer is now initialized after the |start_timestamp_| was set. |
ChangeState_Locked(INITIALIZED); |
base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK); |
+ |
+ // Report metadata. |
+ ReportMetadata_Locked(); |
} |
// static |