/// <summary>Get a predefined sync layer config</summary> internal static SyncLayerConfig getPredefined(ePredefinedSyncLayerConfig pc) { byte val = (byte)pc; if (0 == val || val > 2) { throw new ArgumentException(); } return(predefinedConfigs[val - 1]); }
internal SyncLayerConfiguration(ref Reader reader) { predefined = (ePredefinedSyncLayerConfig)reader.readByte(); SyncLayerConfig slc; switch (predefined) { case ePredefinedSyncLayerConfig.Custom: slc = reader.readStructure <SyncLayerConfig>(); break; case ePredefinedSyncLayerConfig.Mpeg4: case ePredefinedSyncLayerConfig.NullSyncLayerHeader: slc = SyncLayerConfig.getPredefined(predefined); break; default: throw new NotImplementedException($"Predefined sync.layer configuration index { predefined } is not supported by the library"); } flags = slc.flags; timeStampResolution = slc.timeStampResolution; OCRResolution = slc.OCRResolution; timeStampLength = slc.timeStampLength; OCRLength = slc.OCRLength; AU_Length = slc.AU_Length; instantBitrateLength = slc.instantBitrateLength; degradationPriorityLength = slc.degradationPriorityLength; AU_seqNumLength = slc.AU_Length; packetSeqNumLength = slc.packetSeqNumLength; if (flags.HasFlag(eSyncLayerFlags.ConstantDuration)) { constantDuration = new ConstantDuration(ref reader); } else { constantDuration = null; } }