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

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

Issue 575643002: Initialize media timeline correctly for positive start times. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments. Created 6 years, 3 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
« 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 1123 matching lines...) Expand 10 before | Expand all | Expand 10 after
1134 base::AutoLock auto_lock(lock_); 1134 base::AutoLock auto_lock(lock_);
1135 if (type == DemuxerStream::VIDEO) 1135 if (type == DemuxerStream::VIDEO)
1136 return video_.get(); 1136 return video_.get();
1137 1137
1138 if (type == DemuxerStream::AUDIO) 1138 if (type == DemuxerStream::AUDIO)
1139 return audio_.get(); 1139 return audio_.get();
1140 1140
1141 return NULL; 1141 return NULL;
1142 } 1142 }
1143 1143
1144 TimeDelta ChunkDemuxer::GetStartTime() const {
1145 return TimeDelta();
1146 }
1147
1144 Demuxer::Liveness ChunkDemuxer::GetLiveness() const { 1148 Demuxer::Liveness ChunkDemuxer::GetLiveness() const {
1145 return liveness_; 1149 return liveness_;
1146 } 1150 }
1147 1151
1148 void ChunkDemuxer::StartWaitingForSeek(TimeDelta seek_time) { 1152 void ChunkDemuxer::StartWaitingForSeek(TimeDelta seek_time) {
1149 DVLOG(1) << "StartWaitingForSeek()"; 1153 DVLOG(1) << "StartWaitingForSeek()";
1150 base::AutoLock auto_lock(lock_); 1154 base::AutoLock auto_lock(lock_);
1151 DCHECK(state_ == INITIALIZED || state_ == ENDED || state_ == SHUTDOWN || 1155 DCHECK(state_ == INITIALIZED || state_ == ENDED || state_ == SHUTDOWN ||
1152 state_ == PARSE_ERROR) << state_; 1156 state_ == PARSE_ERROR) << state_;
1153 DCHECK(seek_cb_.is_null()); 1157 DCHECK(seek_cb_.is_null());
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
1635 1639
1636 liveness_ = params.liveness; 1640 liveness_ = params.liveness;
1637 } 1641 }
1638 1642
1639 // Wait until all streams have initialized. 1643 // Wait until all streams have initialized.
1640 if ((!source_id_audio_.empty() && !audio_) || 1644 if ((!source_id_audio_.empty() && !audio_) ||
1641 (!source_id_video_.empty() && !video_)) { 1645 (!source_id_video_.empty() && !video_)) {
1642 return; 1646 return;
1643 } 1647 }
1644 1648
1645 SeekAllSources(base::TimeDelta()); 1649 SeekAllSources(GetStartTime());
1646 StartReturningData(); 1650 StartReturningData();
1647 1651
1648 if (duration_ == kNoTimestamp()) 1652 if (duration_ == kNoTimestamp())
1649 duration_ = kInfiniteDuration(); 1653 duration_ = kInfiniteDuration();
1650 1654
1651 // The demuxer is now initialized after the |start_timestamp_| was set. 1655 // The demuxer is now initialized after the |start_timestamp_| was set.
1652 ChangeState_Locked(INITIALIZED); 1656 ChangeState_Locked(INITIALIZED);
1653 base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK); 1657 base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK);
1654 } 1658 }
1655 1659
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
1790 } 1794 }
1791 1795
1792 void ChunkDemuxer::ShutdownAllStreams() { 1796 void ChunkDemuxer::ShutdownAllStreams() {
1793 for (SourceStateMap::iterator itr = source_state_map_.begin(); 1797 for (SourceStateMap::iterator itr = source_state_map_.begin();
1794 itr != source_state_map_.end(); ++itr) { 1798 itr != source_state_map_.end(); ++itr) {
1795 itr->second->Shutdown(); 1799 itr->second->Shutdown();
1796 } 1800 }
1797 } 1801 }
1798 1802
1799 } // namespace media 1803 } // 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