Changeset 148291 in webkit
- Timestamp:
- Apr 12, 2013 11:39:37 AM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r148289 r148291 1 2013-04-11 Jer Noble <jer.noble@apple.com> 2 3 Add support for MediaPlayer::minTimeSeekable() 4 https://bugs.webkit.org/show_bug.cgi?id=114484 5 6 Reviewed by Eric Carlson. 7 8 Plumb a new minTimeSeekable() method through MediaPlayer and 9 MediaPlayerPrivate and use this new method in the existing 10 HTMLMediaElement::minTimeSeekable() method. 11 12 * html/HTMLMediaElement.cpp: 13 (WebCore::HTMLMediaElement::minTimeSeekable): Pass to MediaPlayer. 14 * platform/graphics/MediaPlayer.cpp: 15 (WebCore::NullMediaPlayerPrivate::minTimeSeekable): Return 0. 16 (WebCore::MediaPlayer::minTimeSeekable): Pass to MediaPlayerPrivate. 17 * platform/graphics/MediaPlayer.h: 18 * platform/graphics/MediaPlayerPrivate.h: 19 (WebCore::MediaPlayerPrivateInterface::seekable): Define in terms of 20 minTimeSeekable() 21 (WebCore::MediaPlayerPrivateInterface::minTimeSeekable): Default to 0. 22 * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: 23 (WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation): 24 Initialize new m_cachedMinTimeSeekable ivar. 25 (WebCore::MediaPlayerPrivateAVFoundation::maxTimeSeekableDouble): 26 Renamed from maxTimeSeekable(). 27 (WebCore::MediaPlayerPrivateAVFoundation::minTimeSeekable): Added. 28 Cache value of platformMinTimeSeekable(). 29 (WebCore::MediaPlayerPrivateAVFoundation::seekableTimeRangesChanged): 30 Reset m_cachedMinTimeSeekable. 31 * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h: 32 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: 33 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: 34 (WebCore::MediaPlayerPrivateAVFoundationObjC::seekToTime): float -> double. 35 (WebCore::MediaPlayerPrivateAVFoundationObjC::platformMinTimeSeekable): 36 Added. Retrieve the lowest value from -[m_playerItem seekableTimeRanges]. 37 (WebCore::MediaPlayerPrivateAVFoundationObjC::platformMaxTimeSeekable): 38 float -> double. 39 1 40 2013-04-12 Commit Queue <rniwa@webkit.org> 2 41 -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r148285 r148291 3779 3779 double HTMLMediaElement::minTimeSeekable() const 3780 3780 { 3781 return 0;3781 return m_player ? m_player->minTimeSeekable() : 0; 3782 3782 } 3783 3783 -
trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp
r148099 r148291 136 136 137 137 virtual double maxTimeSeekableDouble() const { return 0; } 138 virtual double minTimeSeekable() const { return 0; } 138 139 virtual PassRefPtr<TimeRanges> buffered() const { return TimeRanges::create(); } 139 140 … … 682 683 } 683 684 685 double MediaPlayer::minTimeSeekable() 686 { 687 return m_private->minTimeSeekable(); 688 } 689 684 690 bool MediaPlayer::didLoadingProgress() 685 691 { -
trunk/Source/WebCore/platform/graphics/MediaPlayer.h
r148099 r148291 316 316 PassRefPtr<TimeRanges> buffered(); 317 317 PassRefPtr<TimeRanges> seekable(); 318 double minTimeSeekable(); 318 319 double maxTimeSeekable(); 319 320 -
trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h
r148099 r148291 106 106 virtual MediaPlayer::ReadyState readyState() const = 0; 107 107 108 virtual PassRefPtr<TimeRanges> seekable() const { return maxTimeSeekable () ? TimeRanges::create(0, maxTimeSeekable()) : TimeRanges::create(); }108 virtual PassRefPtr<TimeRanges> seekable() const { return maxTimeSeekableDouble() ? TimeRanges::create(minTimeSeekable(), maxTimeSeekableDouble()) : TimeRanges::create(); } 109 109 virtual float maxTimeSeekable() const { return 0; } 110 110 virtual double maxTimeSeekableDouble() const { return maxTimeSeekable(); } 111 virtual double minTimeSeekable() const { return 0; } 111 112 virtual PassRefPtr<TimeRanges> buffered() const = 0; 112 113 -
trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp
r148050 r148291 58 58 , m_cachedMaxTimeLoaded(0) 59 59 , m_cachedMaxTimeSeekable(0) 60 , m_cachedMinTimeSeekable(0) 60 61 , m_cachedDuration(MediaPlayer::invalidTime()) 61 62 , m_reportedDuration(MediaPlayer::invalidTime()) … … 362 363 } 363 364 364 float MediaPlayerPrivateAVFoundation::maxTimeSeekable() const365 double MediaPlayerPrivateAVFoundation::maxTimeSeekableDouble() const 365 366 { 366 367 if (!metaDataAvailable()) … … 372 373 LOG(Media, "MediaPlayerPrivateAVFoundation::maxTimeSeekable(%p) - returning %f", this, m_cachedMaxTimeSeekable); 373 374 return m_cachedMaxTimeSeekable; 375 } 376 377 double MediaPlayerPrivateAVFoundation::minTimeSeekable() const 378 { 379 if (!metaDataAvailable()) 380 return 0; 381 382 if (!m_cachedMinTimeSeekable) 383 m_cachedMinTimeSeekable = platformMinTimeSeekable(); 384 385 LOG(Media, "MediaPlayerPrivateAVFoundation::minTimeSeekable(%p) - returning %f", this, m_cachedMinTimeSeekable); 386 return m_cachedMinTimeSeekable; 374 387 } 375 388 … … 571 584 { 572 585 m_cachedMaxTimeSeekable = 0; 586 m_cachedMinTimeSeekable = 0; 573 587 } 574 588 -
trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h
r143884 r148291 158 158 virtual MediaPlayer::NetworkState networkState() const { return m_networkState; } 159 159 virtual MediaPlayer::ReadyState readyState() const { return m_readyState; } 160 virtual float maxTimeSeekable() const; 160 virtual double maxTimeSeekableDouble() const; 161 virtual double minTimeSeekable() const; 161 162 virtual PassRefPtr<TimeRanges> buffered() const; 162 163 virtual bool didLoadingProgress() const; … … 210 211 virtual void updateRate() = 0; 211 212 virtual float rate() const = 0; 212 virtual void seekToTime( floattime) = 0;213 virtual void seekToTime(double time) = 0; 213 214 virtual unsigned totalBytes() const = 0; 214 215 virtual PassRefPtr<TimeRanges> platformBufferedTimeRanges() const = 0; 215 virtual float platformMaxTimeSeekable() const = 0; 216 virtual double platformMaxTimeSeekable() const = 0; 217 virtual double platformMinTimeSeekable() const = 0; 216 218 virtual float platformMaxTimeLoaded() const = 0; 217 219 virtual float platformDuration() const = 0; … … 286 288 IntSize m_cachedNaturalSize; 287 289 mutable float m_cachedMaxTimeLoaded; 288 mutable float m_cachedMaxTimeSeekable; 290 mutable double m_cachedMaxTimeSeekable; 291 mutable double m_cachedMinTimeSeekable; 289 292 mutable float m_cachedDuration; 290 293 float m_reportedDuration; 291 294 mutable float m_maxTimeLoadedAtLastDidLoadingProgress; 292 floatm_seekTo;295 double m_seekTo; 293 296 float m_requestedRate; 294 297 mutable int m_delayCallbacks; -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h
r148123 r148291 123 123 virtual void updateRate(); 124 124 virtual float rate() const; 125 virtual void seekToTime( floattime);125 virtual void seekToTime(double time); 126 126 virtual unsigned totalBytes() const; 127 127 virtual PassRefPtr<TimeRanges> platformBufferedTimeRanges() const; 128 virtual float platformMaxTimeSeekable() const; 128 virtual double platformMinTimeSeekable() const; 129 virtual double platformMaxTimeSeekable() const; 129 130 virtual float platformDuration() const; 130 131 virtual float platformMaxTimeLoaded() const; -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
r148285 r148291 602 602 } 603 603 604 void MediaPlayerPrivateAVFoundationObjC::seekToTime( floattime)604 void MediaPlayerPrivateAVFoundationObjC::seekToTime(double time) 605 605 { 606 606 // setCurrentTime generates several event callbacks, update afterwards. … … 670 670 } 671 671 672 float MediaPlayerPrivateAVFoundationObjC::platformMaxTimeSeekable() const 672 double MediaPlayerPrivateAVFoundationObjC::platformMinTimeSeekable() const 673 { 674 NSArray *seekableRanges = [m_avPlayerItem.get() seekableTimeRanges]; 675 if (!seekableRanges || ![seekableRanges count]) 676 return 0; 677 678 double minTimeSeekable = std::numeric_limits<double>::infinity(); 679 bool hasValidRange = false; 680 for (NSValue *thisRangeValue in seekableRanges) { 681 CMTimeRange timeRange = [thisRangeValue CMTimeRangeValue]; 682 if (!CMTIMERANGE_IS_VALID(timeRange) || CMTIMERANGE_IS_EMPTY(timeRange)) 683 continue; 684 685 hasValidRange = true; 686 double startOfRange = CMTimeGetSeconds(timeRange.start); 687 if (minTimeSeekable > startOfRange) 688 minTimeSeekable = startOfRange; 689 } 690 return hasValidRange ? minTimeSeekable : 0; 691 } 692 693 double MediaPlayerPrivateAVFoundationObjC::platformMaxTimeSeekable() const 673 694 { 674 695 NSArray *seekableRanges = [m_avPlayerItem.get() seekableTimeRanges]; … … 676 697 return 0; 677 698 678 floatmaxTimeSeekable = 0;699 double maxTimeSeekable = 0; 679 700 for (NSValue *thisRangeValue in seekableRanges) { 680 701 CMTimeRange timeRange = [thisRangeValue CMTimeRangeValue]; … … 682 703 continue; 683 704 684 float endOfRange = narrowPrecisionToFloat(CMTimeGetSeconds(CMTimeRangeGetEnd(timeRange)));705 double endOfRange = CMTimeGetSeconds(CMTimeRangeGetEnd(timeRange)); 685 706 if (maxTimeSeekable < endOfRange) 686 707 maxTimeSeekable = endOfRange; 687 708 } 688 return maxTimeSeekable; 709 return maxTimeSeekable; 689 710 } 690 711 … … 1431 1452 return m_languageOfPrimaryAudioTrack; 1432 1453 } 1433 1454 1434 1455 NSArray* assetMetadataKeyNames() 1435 1456 {
Note: See TracChangeset
for help on using the changeset viewer.