mkvmuxer: Disallow AddTrack() after Tracks element is output.
BUG=https://code.google.com/p/webm/issues/detail?id=1083 Change-Id: I6a603337ba5fea1333f3f1c2595f9b87b148c427
This commit is contained in:
parent
1ad314e297
commit
01fdee435c
@ -1047,7 +1047,10 @@ const char Tracks::kVp8CodecId[] = "V_VP8";
|
||||
const char Tracks::kVp9CodecId[] = "V_VP9";
|
||||
const char Tracks::kVp10CodecId[] = "V_VP10";
|
||||
|
||||
Tracks::Tracks() : track_entries_(NULL), track_entries_size_(0) {}
|
||||
Tracks::Tracks()
|
||||
: track_entries_(NULL),
|
||||
track_entries_size_(0),
|
||||
wrote_tracks_(false) {}
|
||||
|
||||
Tracks::~Tracks() {
|
||||
if (track_entries_) {
|
||||
@ -1060,7 +1063,7 @@ Tracks::~Tracks() {
|
||||
}
|
||||
|
||||
bool Tracks::AddTrack(Track* track, int32 number) {
|
||||
if (number < 0)
|
||||
if (number < 0 || wrote_tracks_)
|
||||
return false;
|
||||
|
||||
// This muxer only supports track numbers in the range [1, 126], in
|
||||
@ -1186,6 +1189,7 @@ bool Tracks::Write(IMkvWriter* writer) const {
|
||||
stop_position - payload_position != static_cast<int64>(size))
|
||||
return false;
|
||||
|
||||
wrote_tracks_ = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -569,6 +569,9 @@ class Tracks {
|
||||
// Number of Track elements added.
|
||||
uint32 track_entries_size_;
|
||||
|
||||
// Whether or not Tracks element has already been written via IMkvWriter.
|
||||
mutable bool wrote_tracks_;
|
||||
|
||||
LIBWEBM_DISALLOW_COPY_AND_ASSIGN(Tracks);
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user