void AvidMJPEGTrack::WriteVBEIndexTable(Partition *partition) { KAGFillerWriter kag_filler_writer(partition); partition->markIndexStart(mMXFFile); IndexTableSegment segment; segment.setIndexEditRate(mDescriptorHelper->GetSampleRate()); segment.setIndexSID(mIndexSID); segment.setBodySID(mBodySID); segment.setEditUnitByteCount(0); uint32_t num_index_entries = mIndexSegment.GetSize() / INDEX_ENTRY_SIZE; BMX_ASSERT(num_index_entries >= 1); int64_t index_duration = num_index_entries - 1; mxfUUID uuid; mxf_generate_uuid(&uuid); segment.setInstanceUID(uuid); segment.setIndexStartPosition(0); segment.setIndexDuration(index_duration); segment.writeHeader(mMXFFile, 0, num_index_entries); // Avid ignores the 16-bit llen and uses the number of index entries (uint32) instead segment.writeAvidIndexEntryArrayHeader(mMXFFile, 0, 0, num_index_entries); mMXFFile->write(mIndexSegment.GetBytes(), mIndexSegment.GetSize()); kag_filler_writer.write(mMXFFile); partition->markIndexEnd(mMXFFile); }