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

Side by Side Diff: media/filters/chunk_demuxer.cc

Issue 231283005: Add live mode detection in WebM MediaSource parser. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/filters/chunk_demuxer.h ('k') | media/filters/ffmpeg_demuxer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 956 matching lines...) Expand 10 before | Expand all | Expand 10 after
967 bool splice_frames_enabled) 967 bool splice_frames_enabled)
968 : state_(WAITING_FOR_INIT), 968 : state_(WAITING_FOR_INIT),
969 cancel_next_seek_(false), 969 cancel_next_seek_(false),
970 host_(NULL), 970 host_(NULL),
971 open_cb_(open_cb), 971 open_cb_(open_cb),
972 need_key_cb_(need_key_cb), 972 need_key_cb_(need_key_cb),
973 enable_text_(false), 973 enable_text_(false),
974 log_cb_(log_cb), 974 log_cb_(log_cb),
975 duration_(kNoTimestamp()), 975 duration_(kNoTimestamp()),
976 user_specified_duration_(-1), 976 user_specified_duration_(-1),
977 liveness_(LIVENESS_UNKNOWN),
977 splice_frames_enabled_(splice_frames_enabled) { 978 splice_frames_enabled_(splice_frames_enabled) {
978 DCHECK(!open_cb_.is_null()); 979 DCHECK(!open_cb_.is_null());
979 DCHECK(!need_key_cb_.is_null()); 980 DCHECK(!need_key_cb_.is_null());
980 } 981 }
981 982
982 void ChunkDemuxer::Initialize( 983 void ChunkDemuxer::Initialize(
983 DemuxerHost* host, 984 DemuxerHost* host,
984 const PipelineStatusCB& cb, 985 const PipelineStatusCB& cb,
985 bool enable_text_tracks) { 986 bool enable_text_tracks) {
986 DVLOG(1) << "Init()"; 987 DVLOG(1) << "Init()";
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1057 } 1058 }
1058 1059
1059 TimeDelta ChunkDemuxer::GetStartTime() const { 1060 TimeDelta ChunkDemuxer::GetStartTime() const {
1060 return TimeDelta(); 1061 return TimeDelta();
1061 } 1062 }
1062 1063
1063 base::Time ChunkDemuxer::GetTimelineOffset() const { 1064 base::Time ChunkDemuxer::GetTimelineOffset() const {
1064 return timeline_offset_; 1065 return timeline_offset_;
1065 } 1066 }
1066 1067
1068 Demuxer::Liveness ChunkDemuxer::GetLiveness() const {
1069 return liveness_;
1070 }
1071
1067 void ChunkDemuxer::StartWaitingForSeek(TimeDelta seek_time) { 1072 void ChunkDemuxer::StartWaitingForSeek(TimeDelta seek_time) {
1068 DVLOG(1) << "StartWaitingForSeek()"; 1073 DVLOG(1) << "StartWaitingForSeek()";
1069 base::AutoLock auto_lock(lock_); 1074 base::AutoLock auto_lock(lock_);
1070 DCHECK(state_ == INITIALIZED || state_ == ENDED || state_ == SHUTDOWN || 1075 DCHECK(state_ == INITIALIZED || state_ == ENDED || state_ == SHUTDOWN ||
1071 state_ == PARSE_ERROR) << state_; 1076 state_ == PARSE_ERROR) << state_;
1072 DCHECK(seek_cb_.is_null()); 1077 DCHECK(seek_cb_.is_null());
1073 1078
1074 if (state_ == SHUTDOWN || state_ == PARSE_ERROR) 1079 if (state_ == SHUTDOWN || state_ == PARSE_ERROR)
1075 return; 1080 return;
1076 1081
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
1501 params.timeline_offset != timeline_offset_) { 1506 params.timeline_offset != timeline_offset_) {
1502 MEDIA_LOG(log_cb_) 1507 MEDIA_LOG(log_cb_)
1503 << "Timeline offset is not the same across all SourceBuffers."; 1508 << "Timeline offset is not the same across all SourceBuffers.";
1504 ReportError_Locked(DEMUXER_ERROR_COULD_NOT_OPEN); 1509 ReportError_Locked(DEMUXER_ERROR_COULD_NOT_OPEN);
1505 return; 1510 return;
1506 } 1511 }
1507 1512
1508 timeline_offset_ = params.timeline_offset; 1513 timeline_offset_ = params.timeline_offset;
1509 } 1514 }
1510 1515
1516 if (params.liveness != LIVENESS_UNKNOWN) {
1517 if (liveness_ != LIVENESS_UNKNOWN && params.liveness != liveness_) {
1518 MEDIA_LOG(log_cb_)
1519 << "Liveness is not the same across all SourceBuffers.";
1520 ReportError_Locked(DEMUXER_ERROR_COULD_NOT_OPEN);
1521 return;
1522 }
1523
1524 liveness_ = params.liveness;
1525 }
1526
1511 // Wait until all streams have initialized. 1527 // Wait until all streams have initialized.
1512 if ((!source_id_audio_.empty() && !audio_) || 1528 if ((!source_id_audio_.empty() && !audio_) ||
1513 (!source_id_video_.empty() && !video_)) { 1529 (!source_id_video_.empty() && !video_)) {
1514 return; 1530 return;
1515 } 1531 }
1516 1532
1517 SeekAllSources(GetStartTime()); 1533 SeekAllSources(GetStartTime());
1518 StartReturningData(); 1534 StartReturningData();
1519 1535
1520 if (duration_ == kNoTimestamp()) 1536 if (duration_ == kNoTimestamp())
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1654 } 1670 }
1655 1671
1656 void ChunkDemuxer::ShutdownAllStreams() { 1672 void ChunkDemuxer::ShutdownAllStreams() {
1657 for (SourceStateMap::iterator itr = source_state_map_.begin(); 1673 for (SourceStateMap::iterator itr = source_state_map_.begin();
1658 itr != source_state_map_.end(); ++itr) { 1674 itr != source_state_map_.end(); ++itr) {
1659 itr->second->Shutdown(); 1675 itr->second->Shutdown();
1660 } 1676 }
1661 } 1677 }
1662 1678
1663 } // namespace media 1679 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/chunk_demuxer.h ('k') | media/filters/ffmpeg_demuxer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698