38Status MultiSegmentSegmenter::FinalizeSegment(int64_t start_timestamp,
39 int64_t duration_timestamp,
41 int64_t segment_number) {
43 RETURN_IF_ERROR(Segmenter::FinalizeSegment(
44 start_timestamp, duration_timestamp, is_subsegment, segment_number));
45 if (!cluster()->Finalize())
46 return Status(error::FILE_FAILURE,
"Error finalizing segment.");
49 std::string segment_name =
50 GetSegmentName(options().segment_template, start_timestamp,
51 segment_number, options().bandwidth);
55 RETURN_IF_ERROR(writer_->Close());
57 if (!File::Copy(temp_file_name_.c_str(), segment_name.c_str()))
58 return Status(error::FILE_FAILURE,
"Failure to copy memory file.");
60 if (!File::Delete(temp_file_name_.c_str()))
61 return Status(error::FILE_FAILURE,
"Failure to delete memory file.");
65 if (muxer_listener()) {
66 const uint64_t size = cluster()->Size();
67 muxer_listener()->OnNewSegment(segment_name, start_timestamp,
68 duration_timestamp, size, segment_number);
70 VLOG(1) <<
"WEBM file '" << segment_name <<
"' finalized.";