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

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

Issue 2102323002: MSE: Experimental support for new abort and duration behavior (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 5 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/media_source_state.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 #include <utility> 10 #include <utility>
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 return range; 150 return range;
151 151
152 // Clamp the end of the stream's buffered ranges to fit within the duration. 152 // Clamp the end of the stream's buffered ranges to fit within the duration.
153 // This can be done by intersecting the stream's range with the valid time 153 // This can be done by intersecting the stream's range with the valid time
154 // range. 154 // range.
155 Ranges<TimeDelta> valid_time_range; 155 Ranges<TimeDelta> valid_time_range;
156 valid_time_range.Add(range.start(0), duration); 156 valid_time_range.Add(range.start(0), duration);
157 return range.IntersectionWith(valid_time_range); 157 return range.IntersectionWith(valid_time_range);
158 } 158 }
159 159
160 TimeDelta ChunkDemuxerStream::GetHighestPresentationTimestamp() const {
161 return stream_->GetHighestPresentationTimestamp();
162 }
163
160 TimeDelta ChunkDemuxerStream::GetBufferedDuration() const { 164 TimeDelta ChunkDemuxerStream::GetBufferedDuration() const {
161 return stream_->GetBufferedDuration(); 165 return stream_->GetBufferedDuration();
162 } 166 }
163 167
164 size_t ChunkDemuxerStream::GetBufferedSize() const { 168 size_t ChunkDemuxerStream::GetBufferedSize() const {
165 return stream_->GetBufferedSize(); 169 return stream_->GetBufferedSize();
166 } 170 }
167 171
168 void ChunkDemuxerStream::OnStartOfCodedFrameGroup( 172 void ChunkDemuxerStream::OnStartOfCodedFrameGroup(
169 DecodeTimestamp start_timestamp) { 173 DecodeTimestamp start_timestamp) {
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 Ranges<TimeDelta> ChunkDemuxer::GetBufferedRanges(const std::string& id) const { 590 Ranges<TimeDelta> ChunkDemuxer::GetBufferedRanges(const std::string& id) const {
587 base::AutoLock auto_lock(lock_); 591 base::AutoLock auto_lock(lock_);
588 DCHECK(!id.empty()); 592 DCHECK(!id.empty());
589 593
590 MediaSourceStateMap::const_iterator itr = source_state_map_.find(id); 594 MediaSourceStateMap::const_iterator itr = source_state_map_.find(id);
591 595
592 DCHECK(itr != source_state_map_.end()); 596 DCHECK(itr != source_state_map_.end());
593 return itr->second->GetBufferedRanges(duration_, state_ == ENDED); 597 return itr->second->GetBufferedRanges(duration_, state_ == ENDED);
594 } 598 }
595 599
600 base::TimeDelta ChunkDemuxer::GetHighestPresentationTimestamp(
601 const std::string& id) const {
602 base::AutoLock auto_lock(lock_);
603 DCHECK(!id.empty());
604
605 MediaSourceStateMap::const_iterator itr = source_state_map_.find(id);
606
607 DCHECK(itr != source_state_map_.end());
608 return itr->second->GetHighestPresentationTimestamp();
609 }
610
596 bool ChunkDemuxer::EvictCodedFrames(const std::string& id, 611 bool ChunkDemuxer::EvictCodedFrames(const std::string& id,
597 base::TimeDelta currentMediaTime, 612 base::TimeDelta currentMediaTime,
598 size_t newDataSize) { 613 size_t newDataSize) {
599 DVLOG(1) << __FUNCTION__ << "(" << id << ")" 614 DVLOG(1) << __FUNCTION__ << "(" << id << ")"
600 << " media_time=" << currentMediaTime.InSecondsF() 615 << " media_time=" << currentMediaTime.InSecondsF()
601 << " newDataSize=" << newDataSize; 616 << " newDataSize=" << newDataSize;
602 base::AutoLock auto_lock(lock_); 617 base::AutoLock auto_lock(lock_);
603 618
604 // Note: The direct conversion from PTS to DTS is safe here, since we don't 619 // Note: The direct conversion from PTS to DTS is safe here, since we don't
605 // need to know currentTime precisely for GC. GC only needs to know which GOP 620 // need to know currentTime precisely for GC. GC only needs to know which GOP
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 } 1176 }
1162 1177
1163 void ChunkDemuxer::ShutdownAllStreams() { 1178 void ChunkDemuxer::ShutdownAllStreams() {
1164 for (MediaSourceStateMap::iterator itr = source_state_map_.begin(); 1179 for (MediaSourceStateMap::iterator itr = source_state_map_.begin();
1165 itr != source_state_map_.end(); ++itr) { 1180 itr != source_state_map_.end(); ++itr) {
1166 itr->second->Shutdown(); 1181 itr->second->Shutdown();
1167 } 1182 }
1168 } 1183 }
1169 1184
1170 } // namespace media 1185 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/chunk_demuxer.h ('k') | media/filters/media_source_state.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698