muxer: Reject file if TrackType is never specified
According to matroska specification, TrackType is a mandatory element without a default value [1]. But we have been producing invalid matroska files when TrackType is never specified because we write 0 by default. This patch will reject writing a track without specifying the TrackType value. Specifically, this path will be triggered when Segment::AddTrack() is called but there is no subsequent call to Track::set_type(). [1] http://www.matroska.org/technical/specs/index.html#TrackType Fixes issue #769: https://code.google.com/p/webm/issues/detail?id=769 Change-Id: I4d75d169fd96c7e1fad278561f0e7a3e1135989c
This commit is contained in:
@@ -619,6 +619,10 @@ bool Track::Write(IMkvWriter* writer) const {
|
||||
if (!WriteEbmlMasterElement(writer, kMkvTrackEntry, payload_size))
|
||||
return false;
|
||||
|
||||
// |type_| has to be specified before the Track can be written.
|
||||
if (!type_)
|
||||
return false;
|
||||
|
||||
uint64 size = EbmlElementSize(kMkvTrackNumber, number_);
|
||||
size += EbmlElementSize(kMkvTrackUID, uid_);
|
||||
size += EbmlElementSize(kMkvTrackType, type_);
|
||||
|
||||
Reference in New Issue
Block a user