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

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

Issue 284513003: Implement AudioTrack, AudioTrackList, VideoTrack, and VideoTrackList (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: platform handle per track Created 6 years, 7 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 4dd5bf21b1e3150dbaaf9e43bad26263c5cdcda2..dfd2cf5a1aa51b0e8957d5299c44fc627239bd4e 100644
--- a/Source/core/html/HTMLMediaElement.h
+++ b/Source/core/html/HTMLMediaElement.h
@@ -48,6 +48,7 @@ namespace WebCore {
class AudioSourceProvider;
class AudioSourceProviderClient;
#endif
+class AudioTrackList;
class ContentType;
class Event;
class ExceptionState;
@@ -61,6 +62,7 @@ class HTMLMediaSource;
class TextTrackList;
class TimeRanges;
class URLRegistry;
+class VideoTrackList;
typedef PODIntervalTree<double, TextTrackCue*> CueIntervalTree;
typedef CueIntervalTree::IntervalType CueInterval;
@@ -164,6 +166,12 @@ public:
bool togglePlayStateWillPlay() const;
void togglePlayState();
+ AudioTrackList& audioTracks();
+ void audioTrackChanged(const String& audioTrackID);
+
+ VideoTrackList& videoTracks();
+ void selectedVideoTrackChanged(const String& selectedTrackID);
+
PassRefPtrWillBeRawPtr<TextTrack> addTextTrack(const AtomicString& kind, const AtomicString& label, const AtomicString& language, ExceptionState&);
PassRefPtrWillBeRawPtr<TextTrack> addTextTrack(const AtomicString& kind, const AtomicString& label, ExceptionState& exceptionState) { return addTextTrack(kind, label, emptyAtom, exceptionState); }
PassRefPtrWillBeRawPtr<TextTrack> addTextTrack(const AtomicString& kind, ExceptionState& exceptionState) { return addTextTrack(kind, emptyAtom, emptyAtom, exceptionState); }
@@ -182,6 +190,11 @@ public:
void didAddTrackElement(HTMLTrackElement*);
void didRemoveTrackElement(HTMLTrackElement*);
+ void addAudioTrack(const String& id, blink::WebMediaPlayerClient::AudioTrackKind, const AtomicString& label, const AtomicString& language, bool enabled);
+ void removeAudioTrack(const String& id);
+ void addVideoTrack(const String& id, blink::WebMediaPlayerClient::VideoTrackKind, const AtomicString& label, const AtomicString& language, bool selected);
+ void removeVideoTrack(const String& id);
+
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.
@@ -419,9 +432,22 @@ private:
blink::WebMediaPlayer::CORSMode corsMode() const;
+ // 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();
+
+ void audioTracksTimerFired(Timer<HTMLMediaElement>*);
+
Timer<HTMLMediaElement> m_loadTimer;
Timer<HTMLMediaElement> m_progressEventTimer;
Timer<HTMLMediaElement> m_playbackProgressTimer;
+ Timer<HTMLMediaElement> m_audioTracksTimer;
RefPtr<TimeRanges> m_playedTimeRanges;
OwnPtr<GenericEventQueue> m_asyncEventQueue;
@@ -503,6 +529,8 @@ private:
bool m_processingPreferenceChange : 1;
double m_lastTextTrackUpdateTime;
+ RefPtr<AudioTrackList> m_audioTracks;
+ RefPtr<VideoTrackList> m_videoTracks;
RefPtrWillBeMember<TextTrackList> m_textTracks;
WillBeHeapVector<RefPtrWillBeMember<TextTrack> > m_textTracksWhenResourceSelectionBegan;

Powered by Google App Engine
This is Rietveld 408576698