Index: media/base/media_track.h |
diff --git a/media/base/media_track.h b/media/base/media_track.h |
index 3cd41d736ffa05cd702b6402e5ad91a57b300ada..09ca9e94e2fd44a948b277460787a0335787380f 100644 |
--- a/media/base/media_track.h |
+++ b/media/base/media_track.h |
@@ -15,6 +15,7 @@ namespace media { |
class MEDIA_EXPORT MediaTrack { |
public: |
enum Type { Text, Audio, Video }; |
+ using Id = std::string; |
MediaTrack(Type type, |
StreamParser::TrackId bytestream_track_id, |
const std::string& kind, |
@@ -31,9 +32,30 @@ class MEDIA_EXPORT MediaTrack { |
const std::string& label() const { return label_; } |
const std::string& language() const { return language_; } |
+ Id id() const { return id_; } |
+ void set_id(Id id) { |
+ DCHECK(id_.empty()); |
+ DCHECK(!id.empty()); |
+ id_ = id; |
+ } |
+ |
private: |
Type type_; |
+ |
+ // |bytestream_track_id_| is read from the bytestream and is guaranteed to be |
+ // unique only within the scope of single bytestream's initialization segment. |
+ // But we might have multiple bytestreams (MediaSource might have multiple |
+ // SourceBuffers attached to it, which translates into ChunkDemuxer having |
+ // multiple/ MediaSourceStates and multiple bytestreams) or subsequent init |
wolenetz
2016/06/13 23:23:58
nit: s/multiple\//multiple/
servolk
2016/06/14 00:01:22
Done.
|
+ // segments bytestream ids might be redefined in subsequent init segments. |
wolenetz
2016/06/13 23:23:57
nit: s/{whole line}/ // segments' may redefine th
servolk
2016/06/14 00:01:22
Done.
|
+ // Thus bytestream track ids are not guaranteed to be unique at the Demuxer |
+ // and HTMLMediaElement level. So we generate truly unique media track |id_| |
+ // on the Demuxer level. |
StreamParser::TrackId bytestream_track_id_; |
+ Id id_; |
+ |
+ // These properties are read from input streams by stream parsers as specified |
+ // in https://dev.w3.org/html5/html-sourcing-inband-tracks/. |
std::string kind_; |
std::string label_; |
std::string language_; |