Beispiel #1
0
        public override int probe(MemoryStream data)
        {
            bool avalidSps = false, avalidPps = false, avalidSh = false;

            foreach (var nalUnit in Utility.splitFrame(data.duplicate()))
            {
                NALUnit marker = NALUnit.read(nalUnit);
                if (marker.type == NALUnitType.IDR_SLICE || marker.type == NALUnitType.NON_IDR_SLICE)
                {
                    BitReader reader = new BitReader(nalUnit);
                    avalidSh = validSh(new SliceHeaderReader().readPart1(reader));
                    break;
                }
                else if (marker.type == NALUnitType.SPS)
                {
                    avalidSps = validSps(SeqParameterSet.read(nalUnit));
                }
                else if (marker.type == NALUnitType.PPS)
                {
                    avalidPps = validPps(PictureParameterSet.read(nalUnit));
                }
            }

            return((avalidSh ? 60 : 0) + (avalidSps ? 20 : 0) + (avalidPps ? 20 : 0));
        }
Beispiel #2
0
        public static SeqParameterSet readSPS(System.IO.MemoryStream data)
        {
            System.IO.MemoryStream input = data.duplicate();
            Utility.unescapeNAL(input);
            SeqParameterSet sps = SeqParameterSet.read(input);

            return(sps);
        }
Beispiel #3
0
 public void addSps(List <MemoryStream> spsList)
 {
     foreach (var byteBuffer in spsList)
     {
         MemoryStream dup = byteBuffer.duplicate();
         Utility.unescapeNAL(dup);
         SeqParameterSet s = SeqParameterSet.read(dup);
         sps.Add(s.seq_parameter_set_id, s);
     }
 }
Beispiel #4
0
            public Frame decodeFrame(List <MemoryStream> nalUnits, int[][] buffer)
            {
                Frame result = null;

                foreach (var nalUnit in nalUnits)
                {
                    NALUnit marker = NALUnit.read(nalUnit);

                    Utility.unescapeNAL(nalUnit);

                    switch (marker.type.getValue())
                    {
                    case 1:
                    case 5:
                        if (result == null)
                        {
                            result = init(buffer, nalUnit, marker);
                        }
                        decoder.decode(nalUnit, marker);
                        break;

                    case 8:
                        SeqParameterSet _sps = SeqParameterSet.read(nalUnit);
                        vdecoder.sps.Add(_sps.seq_parameter_set_id, _sps);
                        break;

                    case 7:
                        PictureParameterSet _pps = PictureParameterSet.read(nalUnit);
                        vdecoder.pps.Add(_pps.pic_parameter_set_id, _pps);
                        break;

                    default:
                        break;
                    }
                }

                filter.deblockFrame(result);

                updateReferences(result);

                return(result);
            }