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

Side by Side Diff: trunk/Source/core/html/HTMLMediaElement.cpp

Issue 314413003: Revert 175546 "Eliminate MediaPlayer & MediaPlayerClient abstrac..." (Closed) Base URL: svn://svn.chromium.org/blink/
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | trunk/Source/core/html/HTMLVideoElement.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 1818 matching lines...) Expand 10 before | Expand all | Expand 10 after
1829 if (m_lastSeekTime < now) 1829 if (m_lastSeekTime < now)
1830 addPlayedRange(m_lastSeekTime, now); 1830 addPlayedRange(m_lastSeekTime, now);
1831 } 1831 }
1832 m_lastSeekTime = time; 1832 m_lastSeekTime = time;
1833 m_sentEndEvent = false; 1833 m_sentEndEvent = false;
1834 1834
1835 // 8 - Queue a task to fire a simple event named seeking at the element. 1835 // 8 - Queue a task to fire a simple event named seeking at the element.
1836 scheduleEvent(EventTypeNames::seeking); 1836 scheduleEvent(EventTypeNames::seeking);
1837 1837
1838 // 9 - Set the current playback position to the given new playback position 1838 // 9 - Set the current playback position to the given new playback position
1839 webMediaPlayer()->seek(time); 1839 m_player->seek(time);
1840 1840
1841 // 10-14 are handled, if necessary, when the engine signals a readystate cha nge or otherwise 1841 // 10-14 are handled, if necessary, when the engine signals a readystate cha nge or otherwise
1842 // satisfies seek completion and signals a time change. 1842 // satisfies seek completion and signals a time change.
1843 } 1843 }
1844 1844
1845 void HTMLMediaElement::finishSeek() 1845 void HTMLMediaElement::finishSeek()
1846 { 1846 {
1847 WTF_LOG(Media, "HTMLMediaElement::finishSeek"); 1847 WTF_LOG(Media, "HTMLMediaElement::finishSeek");
1848 1848
1849 // 4.8.10.9 Seeking completion 1849 // 4.8.10.9 Seeking completion
(...skipping 19 matching lines...) Expand all
1869 return webMediaPlayer() && webMediaPlayer()->hasAudio(); 1869 return webMediaPlayer() && webMediaPlayer()->hasAudio();
1870 } 1870 }
1871 1871
1872 bool HTMLMediaElement::seeking() const 1872 bool HTMLMediaElement::seeking() const
1873 { 1873 {
1874 return m_seeking; 1874 return m_seeking;
1875 } 1875 }
1876 1876
1877 void HTMLMediaElement::refreshCachedTime() const 1877 void HTMLMediaElement::refreshCachedTime() const
1878 { 1878 {
1879 if (!webMediaPlayer()) 1879 m_cachedTime = m_player->currentTime();
1880 return;
1881
1882 m_cachedTime = webMediaPlayer()->currentTime();
1883 m_cachedTimeWallClockUpdateTime = WTF::currentTime(); 1880 m_cachedTimeWallClockUpdateTime = WTF::currentTime();
1884 } 1881 }
1885 1882
1886 void HTMLMediaElement::invalidateCachedTime() 1883 void HTMLMediaElement::invalidateCachedTime()
1887 { 1884 {
1888 WTF_LOG(Media, "HTMLMediaElement::invalidateCachedTime"); 1885 WTF_LOG(Media, "HTMLMediaElement::invalidateCachedTime");
1889 1886
1890 // Don't try to cache movie time when playback first starts as the time repo rted by the engine 1887 // Don't try to cache movie time when playback first starts as the time repo rted by the engine
1891 // sometimes fluctuates for a short amount of time, so the cached time will be off if we take it 1888 // sometimes fluctuates for a short amount of time, so the cached time will be off if we take it
1892 // too early. 1889 // too early.
1893 static const double minimumTimePlayingBeforeCacheSnapshot = 0.5; 1890 static const double minimumTimePlayingBeforeCacheSnapshot = 0.5;
1894 1891
1895 m_minimumWallClockTimeToCacheMediaTime = WTF::currentTime() + minimumTimePla yingBeforeCacheSnapshot; 1892 m_minimumWallClockTimeToCacheMediaTime = WTF::currentTime() + minimumTimePla yingBeforeCacheSnapshot;
1896 m_cachedTime = MediaPlayer::invalidTime(); 1893 m_cachedTime = MediaPlayer::invalidTime();
1897 } 1894 }
1898 1895
1899 // playback state 1896 // playback state
1900 double HTMLMediaElement::currentTime() const 1897 double HTMLMediaElement::currentTime() const
1901 { 1898 {
1902 #if LOG_CACHED_TIME_WARNINGS 1899 #if LOG_CACHED_TIME_WARNINGS
1903 static const double minCachedDeltaForWarning = 0.01; 1900 static const double minCachedDeltaForWarning = 0.01;
1904 #endif 1901 #endif
1905 1902
1906 if (!m_player || !webMediaPlayer()) 1903 if (!m_player)
1907 return 0; 1904 return 0;
1908 1905
1909 if (m_seeking) { 1906 if (m_seeking) {
1910 WTF_LOG(Media, "HTMLMediaElement::currentTime - seeking, returning %f", m_lastSeekTime); 1907 WTF_LOG(Media, "HTMLMediaElement::currentTime - seeking, returning %f", m_lastSeekTime);
1911 return m_lastSeekTime; 1908 return m_lastSeekTime;
1912 } 1909 }
1913 1910
1914 if (m_cachedTime != MediaPlayer::invalidTime() && m_paused) { 1911 if (m_cachedTime != MediaPlayer::invalidTime() && m_paused) {
1915 #if LOG_CACHED_TIME_WARNINGS 1912 #if LOG_CACHED_TIME_WARNINGS
1916 double delta = m_cachedTime - webMediaPlayer()->currentTime(); 1913 double delta = m_cachedTime - m_player->currentTime();
1917 if (delta > minCachedDeltaForWarning) 1914 if (delta > minCachedDeltaForWarning)
1918 WTF_LOG(Media, "HTMLMediaElement::currentTime - WARNING, cached time is %f seconds off of media time when paused", delta); 1915 WTF_LOG(Media, "HTMLMediaElement::currentTime - WARNING, cached time is %f seconds off of media time when paused", delta);
1919 #endif 1916 #endif
1920 return m_cachedTime; 1917 return m_cachedTime;
1921 } 1918 }
1922 1919
1923 refreshCachedTime(); 1920 refreshCachedTime();
1924 1921
1925 return m_cachedTime; 1922 return m_cachedTime;
1926 } 1923 }
(...skipping 18 matching lines...) Expand all
1945 // case because MediaSource and SourceBuffer do not notify the element 1942 // case because MediaSource and SourceBuffer do not notify the element
1946 // directly upon duration changes caused by endOfStream, remove, or append 1943 // directly upon duration changes caused by endOfStream, remove, or append
1947 // operations; rather the notification is triggered by the WebMediaPlayer 1944 // operations; rather the notification is triggered by the WebMediaPlayer
1948 // implementation observing that the underlying engine has updated duration 1945 // implementation observing that the underlying engine has updated duration
1949 // and notifying the element to consult its MediaSource for current 1946 // and notifying the element to consult its MediaSource for current
1950 // duration. See http://crbug.com/266644 1947 // duration. See http://crbug.com/266644
1951 1948
1952 if (m_mediaSource) 1949 if (m_mediaSource)
1953 return m_mediaSource->duration(); 1950 return m_mediaSource->duration();
1954 1951
1955 return webMediaPlayer()->duration(); 1952 return m_player->duration();
1956 } 1953 }
1957 1954
1958 bool HTMLMediaElement::paused() const 1955 bool HTMLMediaElement::paused() const
1959 { 1956 {
1960 return m_paused; 1957 return m_paused;
1961 } 1958 }
1962 1959
1963 double HTMLMediaElement::defaultPlaybackRate() const 1960 double HTMLMediaElement::defaultPlaybackRate() const
1964 { 1961 {
1965 return m_defaultPlaybackRate; 1962 return m_defaultPlaybackRate;
(...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after
2761 2758
2762 void HTMLMediaElement::mediaPlayerTimeChanged() 2759 void HTMLMediaElement::mediaPlayerTimeChanged()
2763 { 2760 {
2764 WTF_LOG(Media, "HTMLMediaElement::mediaPlayerTimeChanged"); 2761 WTF_LOG(Media, "HTMLMediaElement::mediaPlayerTimeChanged");
2765 2762
2766 updateActiveTextTrackCues(currentTime()); 2763 updateActiveTextTrackCues(currentTime());
2767 2764
2768 invalidateCachedTime(); 2765 invalidateCachedTime();
2769 2766
2770 // 4.8.10.9 steps 12-14. Needed if no ReadyState change is associated with t he seek. 2767 // 4.8.10.9 steps 12-14. Needed if no ReadyState change is associated with t he seek.
2771 if (m_seeking && m_readyState >= HAVE_CURRENT_DATA && !webMediaPlayer()->see king()) 2768 if (m_seeking && m_readyState >= HAVE_CURRENT_DATA && !m_player->seeking())
2772 finishSeek(); 2769 finishSeek();
2773 2770
2774 // Always call scheduleTimeupdateEvent when the media engine reports a time discontinuity, 2771 // Always call scheduleTimeupdateEvent when the media engine reports a time discontinuity,
2775 // it will only queue a 'timeupdate' event if we haven't already posted one at the current 2772 // it will only queue a 'timeupdate' event if we haven't already posted one at the current
2776 // movie time. 2773 // movie time.
2777 scheduleTimeupdateEvent(false); 2774 scheduleTimeupdateEvent(false);
2778 2775
2779 double now = currentTime(); 2776 double now = currentTime();
2780 double dur = duration(); 2777 double dur = duration();
2781 2778
(...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after
3657 visitor->trace(m_error); 3654 visitor->trace(m_error);
3658 visitor->trace(m_currentSourceNode); 3655 visitor->trace(m_currentSourceNode);
3659 visitor->trace(m_nextChildNodeToConsider); 3656 visitor->trace(m_nextChildNodeToConsider);
3660 visitor->trace(m_textTracks); 3657 visitor->trace(m_textTracks);
3661 visitor->trace(m_textTracksWhenResourceSelectionBegan); 3658 visitor->trace(m_textTracksWhenResourceSelectionBegan);
3662 WillBeHeapSupplementable<HTMLMediaElement>::trace(visitor); 3659 WillBeHeapSupplementable<HTMLMediaElement>::trace(visitor);
3663 HTMLElement::trace(visitor); 3660 HTMLElement::trace(visitor);
3664 } 3661 }
3665 3662
3666 } 3663 }
OLDNEW
« no previous file with comments | « no previous file | trunk/Source/core/html/HTMLVideoElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698