Change return type of Segment::WriteFramesAll()

Change-Id: I7fb45f1779c384bcc1cdea507f1f2f51c28dd827
This commit is contained in:
Matthew Heaney
2012-09-11 18:38:18 -07:00
parent 0edf087bbb
commit 07ac1947f0
2 changed files with 36 additions and 34 deletions

View File

@@ -1482,7 +1482,7 @@ bool Segment::Init(IMkvWriter* ptr_writer) {
} }
bool Segment::Finalize() { bool Segment::Finalize() {
if (!WriteFramesAll()) if (WriteFramesAll() < 0)
return false; return false;
if (mode_ == kFile) { if (mode_ == kFile) {
@@ -1740,7 +1740,7 @@ bool Segment::AddFrame(const uint8* frame,
} }
// Write any audio frames left. // Write any audio frames left.
if (!WriteFramesAll()) if (WriteFramesAll() < 0)
return false; return false;
if (cluster_list_size_ < 1) if (cluster_list_size_ < 1)
@@ -2054,46 +2054,48 @@ bool Segment::QueueFrame(Frame* frame) {
return true; return true;
} }
bool Segment::WriteFramesAll() { int Segment::WriteFramesAll() {
if (frames_) { if (frames_ == NULL)
if (cluster_list_size_ < 1) return 0;
return false;
Cluster* const cluster = cluster_list_[cluster_list_size_-1]; if (cluster_list_size_ < 1)
return -1;
if (!cluster) Cluster* const cluster = cluster_list_[cluster_list_size_-1];
return false;
const uint64 timecode_scale = segment_info_.timecode_scale(); if (!cluster)
return -1;
for (int32 i = 0; i < frames_size_; ++i) { const uint64 timecode_scale = segment_info_.timecode_scale();
Frame*& frame = frames_[i];
const uint64 frame_timestamp = frame->timestamp(); // ns
const uint64 frame_timecode = frame_timestamp / timecode_scale;
if (!cluster->AddFrame(frame->frame(), for (int32 i = 0; i < frames_size_; ++i) {
frame->length(), Frame*& frame = frames_[i];
frame->track_number(), const uint64 frame_timestamp = frame->timestamp(); // ns
frame_timecode, const uint64 frame_timecode = frame_timestamp / timecode_scale;
frame->is_key()))
return false;
if (new_cuepoint_ && cues_track_ == frame->track_number()) { if (!cluster->AddFrame(frame->frame(),
if (!AddCuePoint(frame_timestamp)) frame->length(),
return false; frame->track_number(),
} frame_timecode,
frame->is_key()))
return -1;
if (frame_timestamp > last_timestamp_) if (new_cuepoint_ && cues_track_ == frame->track_number()) {
last_timestamp_ = frame_timestamp; if (!AddCuePoint(frame_timestamp))
return -1;
delete frame;
frame = NULL;
} }
frames_size_ = 0; if (frame_timestamp > last_timestamp_)
last_timestamp_ = frame_timestamp;
delete frame;
frame = NULL;
} }
return true; const int result = frames_size_;
frames_size_ = 0;
return result;
} }
bool Segment::WriteFramesLessThan(uint64 timestamp) { bool Segment::WriteFramesLessThan(uint64 timestamp) {

View File

@@ -773,9 +773,9 @@ class Segment {
// Adds the frame to our frame array. // Adds the frame to our frame array.
bool QueueFrame(Frame* frame); bool QueueFrame(Frame* frame);
// Output all frames that are queued. Returns true on success and if there // Output all frames that are queued. Returns -1 on error, otherwise
// are no frames queued. // it returns the number of frames written.
bool WriteFramesAll(); int WriteFramesAll();
// Output all frames that are queued that have an end time that is less // Output all frames that are queued that have an end time that is less
// then |timestamp|. Returns true on success and if there are no frames // then |timestamp|. Returns true on success and if there are no frames