public NalUnitStreamParser(INalUnitParser nalUnitParser, IH264State state)
        {
            _nalUnitParser = nalUnitParser;
            _state         = state;
            _nalUnitStartByteLongLengthPrefix  = new bool[256];
            _nalUnitStartByteShortLengthPrefix = new bool[256];

            for (int nalRefIdc = 0; nalRefIdc <= 3; nalRefIdc++)
            {
                int nonIdrPictureSliceIndex = (nalRefIdc << 5) | (int)NalUnitType.CodedSliceOfANonIdrPicture;
                _nalUnitStartByteLongLengthPrefix[nonIdrPictureSliceIndex] = true;
            }
            for (int nalRefIdc = 1; nalRefIdc <= 3; nalRefIdc++)
            {
                int nalRefIdcBits = (nalRefIdc << 5);
                _nalUnitStartByteLongLengthPrefix[nalRefIdcBits | (int)NalUnitType.CodedSliceOfAnIdrPicture] = true;
                _nalUnitStartByteShortLengthPrefix[nalRefIdcBits | (int)NalUnitType.SequenceParameterSet]    = true;
                _nalUnitStartByteShortLengthPrefix[nalRefIdcBits | (int)NalUnitType.PictureParameterSet]     = true;
            }

            Configurable <H264Detector.ConfigurationKey> configurable = H264Detector.Configurable;

            _minSliceNalUnitLength = (uint)configurable[H264Detector.ConfigurationKey.MinSliceNalUnitLength];
            _maxSliceNalUnitLength = (uint)configurable[H264Detector.ConfigurationKey.MaxSliceNalUnitLength];
        }
Ejemplo n.º 2
0
        public NalUnitReader(IH264Reader reader, BitStreamDataReader dataReader, IH264State state)
        {
            _reader     = reader;
            _dataReader = dataReader;
            _state      = state;

            _maxTrailingZeroByteLength            = (uint)H264Detector.Configurable[H264Detector.ConfigurationKey.MaxTrailingZeroByteLength];
            _maxReferenceHeaderRetriesPerFragment = (uint)H264Detector.Configurable[H264Detector.ConfigurationKey.MaxReferenceHeaderRetriesPerFragment];
        }
        public H264ResultNodeCallback(IH264State state)
        {
            _state = state;

            _possibleChildHeaders = new Dictionary <string, List <string> >();
            _possibleChildHeaders.Add(SequenceParameterSet.Name, new List <string> {
                PictureParameterSet.Name
            });
            _possibleChildHeaders.Add(PictureParameterSet.Name, new List <string> {
                SupplementalEnhancementInformation.Name, IdrPictureSlice.Name, NonIdrPictureSlice.Name
            });
        }
        public H264Reader(BitStreamDataReader dataReader, IH264State state, IReaderState readerState)
        {
            _dataReader  = dataReader;
            _state       = state;
            _readerState = readerState;

            Configurable <H264Detector.ConfigurationKey> configurable = H264Detector.Configurable;
            uint maxGapBetweenPpsAndSlice = (uint)configurable[H264Detector.ConfigurationKey.MaxGapBetweenPpsAndSlice];
            uint maxGapBetweenPpsAndSps   = (uint)configurable[H264Detector.ConfigurationKey.MaxGapBetweenPpsAndSps];
            uint maxGapBetweenNalUnits    = (uint)configurable[H264Detector.ConfigurationKey.MaxGapBetweenNalUnits];
            uint maxBytesBetweenNalUnits  = Math.Max(maxGapBetweenNalUnits, Math.Max(maxGapBetweenPpsAndSps, maxGapBetweenPpsAndSlice));

            _maxNalUnitDistance = maxBytesBetweenNalUnits + (uint)configurable[H264Detector.ConfigurationKey.MaxSliceNalUnitLength];
        }
        public H264ResultTreeBuilder(BitStreamDataReader dataReader, IH264Reader reader, IH264State state, IScanContext scanContext, NalUnitStreamParser nalUnitStreamParser, ByteStreamParser byteStreamParser)
        {
            _falseHitReduction   = (bool)H264Detector.Configurable[H264Detector.ConfigurationKey.FalseHitReduction];
            _dataReader          = dataReader;
            _reader              = reader;
            _state               = state;
            _scanContext         = scanContext;
            _nalUnitStreamParser = nalUnitStreamParser;
            _byteStreamParser    = byteStreamParser;

            Configurable <H264Detector.ConfigurationKey> configurable = H264Detector.Configurable;

            _maxGapBetweenPpsAndSlice = (uint)configurable[H264Detector.ConfigurationKey.MaxGapBetweenPpsAndSlice];
            _maxGapBetweenPpsAndSps   = (uint)configurable[H264Detector.ConfigurationKey.MaxGapBetweenPpsAndSps];
            _maxGapBetweenNalUnits    = (uint)configurable[H264Detector.ConfigurationKey.MaxGapBetweenNalUnits];
        }
Ejemplo n.º 6
0
 public void CopyTo(IH264State state)
 {
     state.PictureStates[Id] = this;
     state.SequenceStates[SequenceState.Id] = SequenceState;
 }
Ejemplo n.º 7
0
 public void SetUp()
 {
     _state       = new H264State(new SequenceStates(), new PictureStates());
     _resultState = MockRepository.GenerateStub <IResultNodeState>();
 }