Changeset 171215 in webkit
- Timestamp:
- Jul 17, 2014 11:16:56 PM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r171212 r171215 1 2014-07-17 Jer Noble <jer.noble@apple.com> 2 3 [MSE] Re-enqueue after a removeCodedFrames() only if the removed frames overlap what may have possibly been enqueued but undisplayed. 4 https://bugs.webkit.org/show_bug.cgi?id=135039 5 6 Reviewed by Eric Carlson. 7 8 When a client calls removeCodedFrames(), we must re-enqueue those ranges if the removed samples overlap with 9 enqueued but possibly un-displayed samples. Otherwise, replacement samples may lead to decode errors as those 10 new samples dependencies are not met. But if we re-enqueue too frequently, this may cause subtle but noticible 11 display timing glitches, so only re-enqueue when removeCodedFrames have a possiblity of removing enqueued, but 12 not yet displayed samples. 13 14 * Modules/mediasource/SourceBuffer.cpp: 15 (WebCore::SourceBuffer::removeCodedFrames): 16 1 17 2014-07-17 David Kilzer <ddkilzer@apple.com> 2 18 -
trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp
r171033 r171215 577 577 } 578 578 579 // Only force the TrackBuffer to re-enqueue if the removed ranges overlap with enqueued and possibly 580 // not yet displayed samples. 581 PlatformTimeRanges possiblyEnqueuedRanges(currentMediaTime, trackBuffer.lastEnqueuedPresentationTime); 582 possiblyEnqueuedRanges.intersectWith(erasedRanges->ranges()); 583 if (possiblyEnqueuedRanges.length()) 584 trackBuffer.needsReenqueueing = true; 585 579 586 erasedRanges->invert(); 580 587 m_buffered->intersectWith(*erasedRanges); … … 585 592 if (m_active && currentMediaTime >= start && currentMediaTime < end && m_private->readyState() > MediaPlayer::HaveMetadata) 586 593 m_private->setReadyState(MediaPlayer::HaveMetadata); 587 588 trackBuffer.needsReenqueueing = true;589 594 } 590 595
Note: See TracChangeset
for help on using the changeset viewer.