Changeset 168996 in webkit
- Timestamp:
- May 17, 2014 2:36:15 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r168987 r168996 1 2014-05-17 Piotr Grad <p.grad@samsung.com> 2 3 Setting playback rate on video with media controller is not ignored. 4 https://bugs.webkit.org/show_bug.cgi?id=129048 5 6 Reviewed by Jer Noble. 7 8 * media/video-controller-child-rate-expected.txt: Added. 9 * media/video-controller-child-rate.html: Added. 10 1 11 2014-05-16 Simon Fraser <simon.fraser@apple.com> 2 12 -
trunk/Source/WebCore/ChangeLog
r168994 r168996 1 2014-05-17 Piotr Grad <p.grad@samsung.com> 2 3 Setting playback rate on video with media controller is not ignored. 4 https://bugs.webkit.org/show_bug.cgi?id=129048 5 6 Reviewed by Jer Noble. 7 8 Replaced queries for m_playbackRate with effectivePlaybackRate() 9 which includes media controller playback rate. 10 11 Test: media/video-controller-child-rate.html 12 13 * html/HTMLMediaElement.cpp: 14 (WebCore::HTMLMediaElement::parseAttribute): 15 * html/HTMLMediaElement.h: 16 1 17 2014-05-16 Anders Carlsson <andersca@apple.com> 2 18 -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r168755 r168996 2536 2536 // Not too soon, use the cached time only if it hasn't expired. 2537 2537 if (clockDelta < maximumDurationToCacheMediaTime) { 2538 double adjustedCacheTime = m_cachedTime + ( m_playbackRate* clockDelta);2538 double adjustedCacheTime = m_cachedTime + (effectivePlaybackRate() * clockDelta); 2539 2539 2540 2540 #if LOG_CACHED_TIME_WARNINGS … … 2550 2550 if (maximumDurationToCacheMediaTime && now > m_minimumClockTimeToUpdateCachedTime && m_cachedTime != MediaPlayer::invalidTime()) { 2551 2551 double clockDelta = now - m_clockTimeAtLastCachedTimeUpdate; 2552 double delta = m_cachedTime + ( m_playbackRate* clockDelta) - m_player->currentTime();2552 double delta = m_cachedTime + (effectivePlaybackRate() * clockDelta) - m_player->currentTime(); 2553 2553 LOG(Media, "HTMLMediaElement::currentTime - cached time was %f seconds off of media time when it expired", delta); 2554 2554 } … … 2616 2616 } 2617 2617 2618 double HTMLMediaElement::effectivePlaybackRate() const 2619 { 2620 return m_mediaController ? m_mediaController->playbackRate() : m_playbackRate; 2621 } 2622 2618 2623 double HTMLMediaElement::playbackRate() const 2619 2624 { … … 2637 2642 void HTMLMediaElement::updatePlaybackRate() 2638 2643 { 2639 double effectiveRate = m_mediaController ? m_mediaController->playbackRate() : m_playbackRate;2644 double effectiveRate = effectivePlaybackRate(); 2640 2645 if (m_player && potentiallyPlaying() && m_player->rate() != effectiveRate) 2641 2646 m_player->setRate(effectiveRate); … … 2664 2669 // The ended attribute must return true if the media element has ended 2665 2670 // playback and the direction of playback is forwards, and false otherwise. 2666 return endedPlayback() && m_playbackRate> 0;2671 return endedPlayback() && effectivePlaybackRate() > 0; 2667 2672 } 2668 2673 … … 3101 3106 ASSERT(m_player); 3102 3107 3103 if (m_fragmentEndTime != MediaPlayer::invalidTime() && currentTime() >= m_fragmentEndTime && m_playbackRate> 0) {3108 if (m_fragmentEndTime != MediaPlayer::invalidTime() && currentTime() >= m_fragmentEndTime && effectivePlaybackRate() > 0) { 3104 3109 m_fragmentEndTime = MediaPlayer::invalidTime(); 3105 3110 if (!m_mediaController && !m_paused) { … … 3111 3116 scheduleTimeupdateEvent(true); 3112 3117 3113 if (! m_playbackRate)3118 if (!effectivePlaybackRate()) 3114 3119 return; 3115 3120 … … 4033 4038 double now = currentTime(); 4034 4039 double dur = duration(); 4040 double playbackRate = effectivePlaybackRate(); 4035 4041 4036 4042 // When the current playback position reaches the end of the media resource then the user agent must follow these steps: 4037 4043 if (!std::isnan(dur) && dur) { 4038 4044 // If the media element has a loop attribute specified and does not have a current media controller, 4039 if (loop() && !m_mediaController && m_playbackRate > 0) {4045 if (loop() && !m_mediaController && playbackRate > 0) { 4040 4046 m_sentEndEvent = false; 4041 4047 // then seek to the earliest possible position of the media resource and abort these steps when the direction of … … 4043 4049 if (now >= dur) 4044 4050 seek(0); 4045 } else if ((now <= 0 && m_playbackRate < 0) || (now >= dur && m_playbackRate > 0)) {4051 } else if ((now <= 0 && playbackRate < 0) || (now >= dur && playbackRate > 0)) { 4046 4052 // If the media element does not have a current media controller, and the media element 4047 4053 // has still ended playback and paused is false, … … 4353 4359 // or the media element has a current media controller. 4354 4360 double now = currentTime(); 4355 if ( m_playbackRate> 0)4361 if (effectivePlaybackRate() > 0) 4356 4362 return dur > 0 && now >= dur && (!loop() || m_mediaController); 4357 4363 4358 4364 // or the current playback position is the earliest possible position and the direction 4359 4365 // of playback is backwards 4360 if ( m_playbackRate< 0)4366 if (effectivePlaybackRate() < 0) 4361 4367 return now <= 0; 4362 4368 … … 4461 4467 // Set rate, muted before calling play in case they were set before the media engine was setup. 4462 4468 // The media engine should just stash the rate and muted values since it isn't already playing. 4463 m_player->setRate( m_playbackRate);4469 m_player->setRate(effectivePlaybackRate()); 4464 4470 m_player->setMuted(muted()); 4465 4471 -
trunk/Source/WebCore/html/HTMLMediaElement.h
r168512 r168996 501 501 void setNetworkState(MediaPlayer::NetworkState); 502 502 503 double effectivePlaybackRate() const; 504 503 505 virtual Document* mediaPlayerOwningDocument() override; 504 506 virtual void mediaPlayerNetworkStateChanged(MediaPlayer*) override;
Note: See TracChangeset
for help on using the changeset viewer.