Changeset 56010 in webkit
- Timestamp:
- Mar 15, 2010 1:18:47 PM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r56009 r56010 1 2010-03-15 Philippe Normand <pnormand@igalia.com> 2 3 Reviewed by Gustavo Noronha Silva. 4 5 [GStreamer] duration query optimizations 6 https://bugs.webkit.org/show_bug.cgi?id=36116 7 8 Don't reattempt duration queries that previously failed and cache 9 media duration only if it's known. 10 11 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: 12 (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): 13 (WebCore::MediaPlayerPrivate::duration): 14 (WebCore::MediaPlayerPrivate::updateStates): 15 (WebCore::MediaPlayerPrivate::durationChanged): 16 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: 17 1 18 2010-03-11 Peter Kasting <pkasting@google.com> 2 19 -
trunk/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
r56009 r56010 299 299 , m_preload(MediaPlayer::Auto) 300 300 , m_delayingLoad(false) 301 , m_mediaDurationKnown(true) 301 302 { 302 303 if (doGstInit()) … … 417 418 if (m_errorOccured) 418 419 return 0.0; 420 421 // Media duration query failed already, don't attempt new useless queries. 422 if (!m_mediaDurationKnown) 423 return numeric_limits<float>::infinity(); 419 424 420 425 if (m_mediaDuration) … … 876 881 if (!m_mediaDuration) { 877 882 float newDuration = duration(); 878 if (!isinf(newDuration)) 883 m_mediaDurationKnown = !isinf(newDuration); 884 if (m_mediaDurationKnown) 879 885 m_mediaDuration = newDuration; 880 886 } … … 1114 1120 1115 1121 // And re-cache it if possible. 1122 GstState state; 1123 gst_element_get_state(m_playBin, &state, 0, 0); 1116 1124 float newDuration = duration(); 1125 1126 if (state <= GST_STATE_READY) { 1127 // Don't set m_mediaDurationKnown yet if the pipeline is not 1128 // paused. This allows duration() query to fail at least once 1129 // before playback starts and duration becomes known. 1130 if (!isinf(newDuration)) 1131 m_mediaDuration = newDuration; 1132 } else { 1133 m_mediaDurationKnown = !isinf(newDuration); 1134 if (m_mediaDurationKnown) 1135 m_mediaDuration = newDuration; 1136 } 1137 1117 1138 if (!isinf(newDuration)) 1118 1139 m_mediaDuration = newDuration; -
trunk/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
r56009 r56010 171 171 MediaPlayer::Preload m_preload; 172 172 bool m_delayingLoad; 173 bool m_mediaDurationKnown; 173 174 }; 174 175 }
Note: See TracChangeset
for help on using the changeset viewer.