| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/filters/chunk_demuxer.h" | 5 #include "media/filters/chunk_demuxer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <list> | 9 #include <list> |
| 10 | 10 |
| (...skipping 1014 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1025 CHECK_EQ(type_, TEXT); | 1025 CHECK_EQ(type_, TEXT); |
| 1026 base::AutoLock auto_lock(lock_); | 1026 base::AutoLock auto_lock(lock_); |
| 1027 return stream_->GetCurrentTextTrackConfig(); | 1027 return stream_->GetCurrentTextTrackConfig(); |
| 1028 } | 1028 } |
| 1029 | 1029 |
| 1030 void ChunkDemuxerStream::SetLiveness(Liveness liveness) { | 1030 void ChunkDemuxerStream::SetLiveness(Liveness liveness) { |
| 1031 base::AutoLock auto_lock(lock_); | 1031 base::AutoLock auto_lock(lock_); |
| 1032 liveness_ = liveness; | 1032 liveness_ = liveness; |
| 1033 } | 1033 } |
| 1034 | 1034 |
| 1035 void ChunkDemuxerStream::NotifyMediaTimeUpdate(DecodeTimestamp media_time) { |
| 1036 base::AutoLock auto_lock(lock_); |
| 1037 stream_->NotifyMediaTimeUpdate(media_time); |
| 1038 } |
| 1039 |
| 1035 void ChunkDemuxerStream::ChangeState_Locked(State state) { | 1040 void ChunkDemuxerStream::ChangeState_Locked(State state) { |
| 1036 lock_.AssertAcquired(); | 1041 lock_.AssertAcquired(); |
| 1037 DVLOG(1) << "ChunkDemuxerStream::ChangeState_Locked() : " | 1042 DVLOG(1) << "ChunkDemuxerStream::ChangeState_Locked() : " |
| 1038 << "type " << type_ | 1043 << "type " << type_ |
| 1039 << " - " << state_ << " -> " << state; | 1044 << " - " << state_ << " -> " << state; |
| 1040 state_ = state; | 1045 state_ = state; |
| 1041 } | 1046 } |
| 1042 | 1047 |
| 1043 ChunkDemuxerStream::~ChunkDemuxerStream() {} | 1048 ChunkDemuxerStream::~ChunkDemuxerStream() {} |
| 1044 | 1049 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1117 log_cb_(log_cb), | 1122 log_cb_(log_cb), |
| 1118 media_log_(media_log), | 1123 media_log_(media_log), |
| 1119 duration_(kNoTimestamp()), | 1124 duration_(kNoTimestamp()), |
| 1120 user_specified_duration_(-1), | 1125 user_specified_duration_(-1), |
| 1121 liveness_(DemuxerStream::LIVENESS_UNKNOWN), | 1126 liveness_(DemuxerStream::LIVENESS_UNKNOWN), |
| 1122 splice_frames_enabled_(splice_frames_enabled) { | 1127 splice_frames_enabled_(splice_frames_enabled) { |
| 1123 DCHECK(!open_cb_.is_null()); | 1128 DCHECK(!open_cb_.is_null()); |
| 1124 DCHECK(!encrypted_media_init_data_cb_.is_null()); | 1129 DCHECK(!encrypted_media_init_data_cb_.is_null()); |
| 1125 } | 1130 } |
| 1126 | 1131 |
| 1132 void ChunkDemuxer::SetMediaTimeProvider( |
| 1133 const base::Callback<base::TimeDelta(void)>& get_media_time_cb) { |
| 1134 get_media_time_cb_ = get_media_time_cb; |
| 1135 } |
| 1136 |
| 1127 void ChunkDemuxer::Initialize( | 1137 void ChunkDemuxer::Initialize( |
| 1128 DemuxerHost* host, | 1138 DemuxerHost* host, |
| 1129 const PipelineStatusCB& cb, | 1139 const PipelineStatusCB& cb, |
| 1130 bool enable_text_tracks) { | 1140 bool enable_text_tracks) { |
| 1131 DVLOG(1) << "Init()"; | 1141 DVLOG(1) << "Init()"; |
| 1132 | 1142 |
| 1133 base::AutoLock auto_lock(lock_); | 1143 base::AutoLock auto_lock(lock_); |
| 1134 | 1144 |
| 1135 init_cb_ = BindToCurrentLoop(cb); | 1145 init_cb_ = BindToCurrentLoop(cb); |
| 1136 if (state_ == SHUTDOWN) { | 1146 if (state_ == SHUTDOWN) { |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1325 TimeDelta* timestamp_offset, | 1335 TimeDelta* timestamp_offset, |
| 1326 const InitSegmentReceivedCB& init_segment_received_cb) { | 1336 const InitSegmentReceivedCB& init_segment_received_cb) { |
| 1327 DVLOG(1) << "AppendData(" << id << ", " << length << ")"; | 1337 DVLOG(1) << "AppendData(" << id << ", " << length << ")"; |
| 1328 | 1338 |
| 1329 DCHECK(!id.empty()); | 1339 DCHECK(!id.empty()); |
| 1330 DCHECK(timestamp_offset); | 1340 DCHECK(timestamp_offset); |
| 1331 DCHECK(!init_segment_received_cb.is_null()); | 1341 DCHECK(!init_segment_received_cb.is_null()); |
| 1332 | 1342 |
| 1333 Ranges<TimeDelta> ranges; | 1343 Ranges<TimeDelta> ranges; |
| 1334 | 1344 |
| 1345 if (!get_media_time_cb_.is_null()) { |
| 1346 DecodeTimestamp current_media_time = |
| 1347 DecodeTimestamp::FromPresentationTime(get_media_time_cb_.Run()); |
| 1348 if (audio_) |
| 1349 audio_->NotifyMediaTimeUpdate(current_media_time); |
| 1350 if (video_) |
| 1351 video_->NotifyMediaTimeUpdate(current_media_time); |
| 1352 } |
| 1353 |
| 1335 { | 1354 { |
| 1336 base::AutoLock auto_lock(lock_); | 1355 base::AutoLock auto_lock(lock_); |
| 1337 DCHECK_NE(state_, ENDED); | 1356 DCHECK_NE(state_, ENDED); |
| 1338 | 1357 |
| 1339 // Capture if any of the SourceBuffers are waiting for data before we start | 1358 // Capture if any of the SourceBuffers are waiting for data before we start |
| 1340 // parsing. | 1359 // parsing. |
| 1341 bool old_waiting_for_data = IsSeekWaitingForData_Locked(); | 1360 bool old_waiting_for_data = IsSeekWaitingForData_Locked(); |
| 1342 | 1361 |
| 1343 if (length == 0u) | 1362 if (length == 0u) |
| 1344 return; | 1363 return; |
| (...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1852 } | 1871 } |
| 1853 | 1872 |
| 1854 void ChunkDemuxer::ShutdownAllStreams() { | 1873 void ChunkDemuxer::ShutdownAllStreams() { |
| 1855 for (SourceStateMap::iterator itr = source_state_map_.begin(); | 1874 for (SourceStateMap::iterator itr = source_state_map_.begin(); |
| 1856 itr != source_state_map_.end(); ++itr) { | 1875 itr != source_state_map_.end(); ++itr) { |
| 1857 itr->second->Shutdown(); | 1876 itr->second->Shutdown(); |
| 1858 } | 1877 } |
| 1859 } | 1878 } |
| 1860 | 1879 |
| 1861 } // namespace media | 1880 } // namespace media |
| OLD | NEW |