using JT1078.FMp4.Interfaces; using JT1078.FMp4.MessagePack; using System; using System.Collections.Generic; using System.Text; namespace JT1078.FMp4 { /// /// ctts /// public class CompositionOffsetBox : FullBox, IFMp4MessagePackFormatter { /// /// ctts /// /// /// public CompositionOffsetBox(byte version=0, uint flags=0) : base("ctts", version, flags) { } public uint EntryCount { get; set; } public List CompositionOffsetInfos { get; set; } public void ToBuffer(ref FMp4MessagePackWriter writer) { Start(ref writer); WriterFullBoxToBuffer(ref writer); if(CompositionOffsetInfos!=null && CompositionOffsetInfos.Count > 0) { writer.WriteUInt32((uint)CompositionOffsetInfos.Count); foreach(var item in CompositionOffsetInfos) { if (Version == 0) { writer.WriteUInt32(item.SampleCount); writer.WriteUInt32(item.SampleOffset); } else { writer.WriteUInt32(item.SampleCount); writer.WriteInt32(item.SignedSampleOffset); } } } else { writer.WriteUInt32(0); } End(ref writer); } public class CompositionOffsetInfo { public uint SampleCount { get; set; } public uint SampleOffset { get; set; } /// /// version == 1 /// public int SignedSampleOffset { get; set; } } } }