コード例 #1
0
ファイル: SyncLayerDescriptor.cs プロジェクト: zeta1999/Vrmac
        /// <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]);
        }
コード例 #2
0
        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;
            }
        }