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

Unified Diff: Source/core/html/HTMLMediaElement.h

Issue 170233009: Initial implementation of AudioTrack, AudioTrackList, VideoTrack, and VideoTrackList. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@blink-master
Patch Set: Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/html/HTMLMediaElement.h
diff --git a/Source/core/html/HTMLMediaElement.h b/Source/core/html/HTMLMediaElement.h
index 8508fc2d52de60904aa3943c0ad6c87c40492652..4e2806f4fd64311b13b25f0adbeed0c84423dfc2 100644
--- a/Source/core/html/HTMLMediaElement.h
+++ b/Source/core/html/HTMLMediaElement.h
@@ -41,6 +41,7 @@ namespace blink {
class WebContentDecryptionModule;
class WebInbandTextTrack;
class WebLayer;
+class WebMediaPlayer;
}
namespace WebCore {
@@ -49,6 +50,7 @@ namespace WebCore {
class AudioSourceProvider;
class MediaElementAudioSourceNode;
#endif
+class AudioTrackList;
class ContentType;
class Event;
class ExceptionState;
@@ -63,6 +65,7 @@ class HTMLMediaSource;
class TextTrackList;
class TimeRanges;
class URLRegistry;
+class VideoTrackList;
typedef PODIntervalTree<double, TextTrackCue*> CueIntervalTree;
typedef CueIntervalTree::IntervalType CueInterval;
@@ -82,6 +85,7 @@ public:
static bool isMediaStreamURL(const String& url);
MediaPlayer* player() const { return m_player.get(); }
+ blink::WebMediaPlayer* webMediaPlayer() const { return m_player ? m_player->webMediaPlayer() : 0; }
virtual bool isVideo() const = 0;
virtual bool hasVideo() const OVERRIDE { return false; }
@@ -179,6 +183,12 @@ public:
virtual bool canPlay() const OVERRIDE FINAL;
+ AudioTrackList* audioTracks();
+ void didEnabledAudioTrackChange(const AtomicString& audioTrackID, bool enabled);
+
+ VideoTrackList* videoTracks();
+ void didSelectedVideoTrackChange(const AtomicString& unselectedTrackID, const AtomicString& selectedTrackID);
+
PassRefPtr<TextTrack> addTextTrack(const AtomicString& kind, const AtomicString& label, const AtomicString& language, ExceptionState&);
PassRefPtr<TextTrack> addTextTrack(const AtomicString& kind, const AtomicString& label, ExceptionState& exceptionState) { return addTextTrack(kind, label, emptyAtom, exceptionState); }
PassRefPtr<TextTrack> addTextTrack(const AtomicString& kind, ExceptionState& exceptionState) { return addTextTrack(kind, emptyAtom, emptyAtom, exceptionState); }
@@ -186,17 +196,21 @@ public:
TextTrackList* textTracks();
CueList currentlyActiveCues() const { return m_currentlyActiveCues; }
- void addTrack(TextTrack*);
- void removeTrack(TextTrack*);
- void removeAllInbandTracks();
+ void addTextTrack(TextTrack*);
+ void removeTextTrack(TextTrack*, bool fireRemoveTrackEvent);
+ void forgetResourceSpecificTracks();
void closeCaptionTracksChanged();
void notifyMediaPlayerOfTextTrackChanges();
void didAddTrack(HTMLTrackElement*);
void didRemoveTrack(HTMLTrackElement*);
- virtual void mediaPlayerDidAddTrack(blink::WebInbandTextTrack*) OVERRIDE FINAL;
- virtual void mediaPlayerDidRemoveTrack(blink::WebInbandTextTrack*) OVERRIDE FINAL;
+ virtual void mediaPlayerDidAddVideoTrack(const AtomicString& id, const AtomicString& kind, const AtomicString& label, const AtomicString& language, bool selected) OVERRIDE FINAL;
+ virtual void mediaPlayerDidRemoveVideoTrack(const AtomicString& id) OVERRIDE FINAL;
+ virtual void mediaPlayerDidAddAudioTrack(const AtomicString& id, const AtomicString& kind, const AtomicString& label, const AtomicString& language, bool enabled) OVERRIDE FINAL;
+ virtual void mediaPlayerDidRemoveAudioTrack(const AtomicString& id) OVERRIDE FINAL;
+ virtual void mediaPlayerDidAddTextTrack(blink::WebInbandTextTrack*) OVERRIDE FINAL;
+ virtual void mediaPlayerDidRemoveTextTrack(blink::WebInbandTextTrack*) OVERRIDE FINAL;
// FIXME: Remove this when WebMediaPlayerClientImpl::loadInternal does not depend on it.
virtual KURL mediaPlayerPosterURL() OVERRIDE { return KURL(); }
@@ -461,6 +475,16 @@ private:
blink::WebContentDecryptionModule* contentDecryptionModule();
void setMediaKeysInternal(MediaKeys*);
+ // Creates placeholder AudioTrack and/or VideoTrack objects when WebMemediaPlayer objects
+ // advertise they have audio and/or video, but don't explicity signal them via
+ // mediaPlayerDidAddAudioTrack() and mediaPlayerDidAddVideoTrack().
+ // FIXME: Remove this once all WebMediaPlayer implementations properly report their track info.
+ void createPlaceholderTracksIfNecessary();
+
+ // Sets the selected/enabled tracks if they aren't set before we initially
+ // transition to HAVE_METADATA.
+ void selectInitialTracksIfNecessary();
+
Timer<HTMLMediaElement> m_loadTimer;
Timer<HTMLMediaElement> m_progressEventTimer;
Timer<HTMLMediaElement> m_playbackProgressTimer;
@@ -546,6 +570,8 @@ private:
bool m_processingPreferenceChange : 1;
double m_lastTextTrackUpdateTime;
+ RefPtr<AudioTrackList> m_audioTracks;
+ RefPtr<VideoTrackList> m_videoTracks;
RefPtr<TextTrackList> m_textTracks;
Vector<RefPtr<TextTrack> > m_textTracksWhenResourceSelectionBegan;

Powered by Google App Engine
This is Rietveld 408576698