package org.w3c.dom.mediasource;


// Downloaded from https://www.w3.org/TR/media-source/
enum ReadyState {
    "closed",
    "open",
    "ended"
};
enum EndOfStreamError {
    "network",
    "decode"
};
[Constructor]
interface MediaSource : EventTarget {
 readonly attribute SourceBufferList sourceBuffers;
 readonly attribute SourceBufferList activeSourceBuffers;
 readonly attribute ReadyState readyState;
 attribute unrestricted double duration;
 attribute EventHandler onsourceopen;
 attribute EventHandler onsourceended;
 attribute EventHandler onsourceclose;
 SourceBuffer addSourceBuffer(DOMString type);
 void removeSourceBuffer(SourceBuffer sourceBuffer);
 void endOfStream(optional EndOfStreamError error);
 void setLiveSeekableRange(double start, double end);
 void clearLiveSeekableRange();
 static boolean isTypeSupported(DOMString type);
};
enum AppendMode {
    "segments",
    "sequence"
};
interface SourceBuffer : EventTarget {
 attribute AppendMode mode;
 readonly attribute boolean updating;
 readonly attribute TimeRanges buffered;
 attribute double timestampOffset;
 readonly attribute AudioTrackList audioTracks;
 readonly attribute VideoTrackList videoTracks;
 readonly attribute TextTrackList textTracks;
 attribute double appendWindowStart;
 attribute unrestricted double appendWindowEnd;
 attribute EventHandler onupdatestart;
 attribute EventHandler onupdate;
 attribute EventHandler onupdateend;
 attribute EventHandler onerror;
 attribute EventHandler onabort;
 void appendBuffer(BufferSource data);
 void abort();
 void remove(double start, unrestricted double end);
};
interface SourceBufferList : EventTarget {
 readonly attribute unsigned long length;
 attribute EventHandler onaddsourcebuffer;
 attribute EventHandler onremovesourcebuffer;
 getter SourceBuffer (unsigned long index);
};
[Exposed=Window]
partial interface URL {
 static DOMString createObjectURL(MediaSource mediaSource);
};
partial interface AudioTrack {
 readonly attribute SourceBuffer? sourceBuffer;
};
partial interface VideoTrack {
 readonly attribute SourceBuffer? sourceBuffer;
};
partial interface TextTrack {
 readonly attribute SourceBuffer? sourceBuffer;
};

