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::kVp9CodecId[] = "V_VP9";
|
||||||
const char Tracks::kVp10CodecId[] = "V_VP10";
|
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() {
|
Tracks::~Tracks() {
|
||||||
if (track_entries_) {
|
if (track_entries_) {
|
||||||
@ -1060,7 +1063,7 @@ Tracks::~Tracks() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Tracks::AddTrack(Track* track, int32 number) {
|
bool Tracks::AddTrack(Track* track, int32 number) {
|
||||||
if (number < 0)
|
if (number < 0 || wrote_tracks_)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// This muxer only supports track numbers in the range [1, 126], in
|
// 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))
|
stop_position - payload_position != static_cast<int64>(size))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
wrote_tracks_ = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -569,6 +569,9 @@ class Tracks {
|
|||||||
// Number of Track elements added.
|
// Number of Track elements added.
|
||||||
uint32 track_entries_size_;
|
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);
|
LIBWEBM_DISALLOW_COPY_AND_ASSIGN(Tracks);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user