Chromium Code Reviews| 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 957 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 968 bool splice_frames_enabled) | 968 bool splice_frames_enabled) |
| 969 : state_(WAITING_FOR_INIT), | 969 : state_(WAITING_FOR_INIT), |
| 970 cancel_next_seek_(false), | 970 cancel_next_seek_(false), |
| 971 host_(NULL), | 971 host_(NULL), |
| 972 open_cb_(open_cb), | 972 open_cb_(open_cb), |
| 973 need_key_cb_(need_key_cb), | 973 need_key_cb_(need_key_cb), |
| 974 enable_text_(false), | 974 enable_text_(false), |
| 975 log_cb_(log_cb), | 975 log_cb_(log_cb), |
| 976 duration_(kNoTimestamp()), | 976 duration_(kNoTimestamp()), |
| 977 user_specified_duration_(-1), | 977 user_specified_duration_(-1), |
| 978 live_mode_(false), | |
| 978 splice_frames_enabled_(splice_frames_enabled) { | 979 splice_frames_enabled_(splice_frames_enabled) { |
| 979 DCHECK(!open_cb_.is_null()); | 980 DCHECK(!open_cb_.is_null()); |
| 980 DCHECK(!need_key_cb_.is_null()); | 981 DCHECK(!need_key_cb_.is_null()); |
| 981 } | 982 } |
| 982 | 983 |
| 983 void ChunkDemuxer::Initialize( | 984 void ChunkDemuxer::Initialize( |
| 984 DemuxerHost* host, | 985 DemuxerHost* host, |
| 985 const PipelineStatusCB& cb, | 986 const PipelineStatusCB& cb, |
| 986 bool enable_text_tracks) { | 987 bool enable_text_tracks) { |
| 987 DVLOG(1) << "Init()"; | 988 DVLOG(1) << "Init()"; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1058 } | 1059 } |
| 1059 | 1060 |
| 1060 TimeDelta ChunkDemuxer::GetStartTime() const { | 1061 TimeDelta ChunkDemuxer::GetStartTime() const { |
| 1061 return TimeDelta(); | 1062 return TimeDelta(); |
| 1062 } | 1063 } |
| 1063 | 1064 |
| 1064 base::Time ChunkDemuxer::GetTimelineOffset() const { | 1065 base::Time ChunkDemuxer::GetTimelineOffset() const { |
| 1065 return timeline_offset_; | 1066 return timeline_offset_; |
| 1066 } | 1067 } |
| 1067 | 1068 |
| 1069 bool ChunkDemuxer::IsLiveMode() const { | |
| 1070 return live_mode_; | |
| 1071 } | |
| 1072 | |
| 1068 void ChunkDemuxer::StartWaitingForSeek(TimeDelta seek_time) { | 1073 void ChunkDemuxer::StartWaitingForSeek(TimeDelta seek_time) { |
| 1069 DVLOG(1) << "StartWaitingForSeek()"; | 1074 DVLOG(1) << "StartWaitingForSeek()"; |
| 1070 base::AutoLock auto_lock(lock_); | 1075 base::AutoLock auto_lock(lock_); |
| 1071 DCHECK(state_ == INITIALIZED || state_ == ENDED || state_ == SHUTDOWN || | 1076 DCHECK(state_ == INITIALIZED || state_ == ENDED || state_ == SHUTDOWN || |
| 1072 state_ == PARSE_ERROR) << state_; | 1077 state_ == PARSE_ERROR) << state_; |
| 1073 DCHECK(seek_cb_.is_null()); | 1078 DCHECK(seek_cb_.is_null()); |
| 1074 | 1079 |
| 1075 if (state_ == SHUTDOWN || state_ == PARSE_ERROR) | 1080 if (state_ == SHUTDOWN || state_ == PARSE_ERROR) |
| 1076 return; | 1081 return; |
| 1077 | 1082 |
| (...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1502 params.timeline_offset != timeline_offset_) { | 1507 params.timeline_offset != timeline_offset_) { |
| 1503 MEDIA_LOG(log_cb_) | 1508 MEDIA_LOG(log_cb_) |
| 1504 << "Timeline offset is not the same across all SourceBuffers."; | 1509 << "Timeline offset is not the same across all SourceBuffers."; |
| 1505 ReportError_Locked(DEMUXER_ERROR_COULD_NOT_OPEN); | 1510 ReportError_Locked(DEMUXER_ERROR_COULD_NOT_OPEN); |
| 1506 return; | 1511 return; |
| 1507 } | 1512 } |
| 1508 | 1513 |
| 1509 timeline_offset_ = params.timeline_offset; | 1514 timeline_offset_ = params.timeline_offset; |
| 1510 } | 1515 } |
| 1511 | 1516 |
| 1517 live_mode_ |= params.live_mode; | |
|
acolwell GONE FROM CHROMIUM
2014/04/24 21:14:16
I feel like we should enforce an all the same or e
Sergey Ulanov
2014/04/24 23:17:45
Done.
| |
| 1518 | |
| 1512 // Wait until all streams have initialized. | 1519 // Wait until all streams have initialized. |
| 1513 if ((!source_id_audio_.empty() && !audio_) || | 1520 if ((!source_id_audio_.empty() && !audio_) || |
| 1514 (!source_id_video_.empty() && !video_)) { | 1521 (!source_id_video_.empty() && !video_)) { |
| 1515 return; | 1522 return; |
| 1516 } | 1523 } |
| 1517 | 1524 |
| 1518 SeekAllSources(GetStartTime()); | 1525 SeekAllSources(GetStartTime()); |
| 1519 StartReturningData(); | 1526 StartReturningData(); |
| 1520 | 1527 |
| 1521 if (duration_ == kNoTimestamp()) | 1528 if (duration_ == kNoTimestamp()) |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1655 } | 1662 } |
| 1656 | 1663 |
| 1657 void ChunkDemuxer::ShutdownAllStreams() { | 1664 void ChunkDemuxer::ShutdownAllStreams() { |
| 1658 for (SourceStateMap::iterator itr = source_state_map_.begin(); | 1665 for (SourceStateMap::iterator itr = source_state_map_.begin(); |
| 1659 itr != source_state_map_.end(); ++itr) { | 1666 itr != source_state_map_.end(); ++itr) { |
| 1660 itr->second->Shutdown(); | 1667 itr->second->Shutdown(); |
| 1661 } | 1668 } |
| 1662 } | 1669 } |
| 1663 | 1670 |
| 1664 } // namespace media | 1671 } // namespace media |
| OLD | NEW |