Ejemplo n.º 1
0
        private void GetSliceTypeAndFrameNumFromH264Payload(StreamDataBlockInfo oneFrameInfo)
        {
            int count = oneFrameInfo.SliceSize;

            _reader.BaseStream.Position = (long)oneFrameInfo.StreamOffset;
            BinaryReader binReader = new BinaryReader(_reader.BaseStream);

            byte[]     buf    = _reader.ReadBytes(count);
            H264Sample sample = new H264Sample(_sps, _pps, count);

            sample.ParseSample(buf);

            oneFrameInfo.CTS = (ulong)sample.FrameNum;
            if (sample.SliceType == SliceTypes.B)
            {
                oneFrameInfo.SliceType = SliceType.BFrame;
            }
            else if (sample.SliceType == SliceTypes.I)
            {
                oneFrameInfo.SliceType = SliceType.IFrame;
            }
            else
            {
                oneFrameInfo.SliceType = SliceType.DFrame;
            }
        }
Ejemplo n.º 2
0
 public override Slice GetSample(StreamDataBlockInfo SampleInfo)
 {
     Slice ans = new Slice();
       ans.Copy(SampleInfo);
       ans.SliceBytes = new byte[SampleInfo.SliceSize];
       // read H264 payload for display and processing --
       // for display:
       ParentStream.Stream.Position = (long)ans.StreamOffset;
       ParentStream.Stream.Read(ans.SliceBytes, 0, ans.SliceSize);
       // for processing:
       // (hand-off the payload processing to a separate thread so this method
       // can return immediately)
     #if MV_Centerus
       H264Sample sample = new H264Sample(_sps, _pps, ans.SliceSize);
       sample.SampleDoneEvent += CompletionCallback;
       sample.ParseSample(ans.SliceBytes); // async call
       samples.Add(sample);
     #endif
       return (ans);
 }
Ejemplo n.º 3
0
        public override Slice GetSample(StreamDataBlockInfo SampleInfo)
        {
            Slice ans = new Slice();

            ans.Copy(SampleInfo);
            ans.SliceBytes = new byte[SampleInfo.SliceSize];
            // read H264 payload for display and processing --
            // for display:
            ParentStream.Stream.Position = (long)ans.StreamOffset;
            ParentStream.Stream.Read(ans.SliceBytes, 0, ans.SliceSize);
            // for processing:
            // (hand-off the payload processing to a separate thread so this method
            // can return immediately)
#if MV_Centerus
            H264Sample sample = new H264Sample(_sps, _pps, ans.SliceSize);
            sample.SampleDoneEvent += CompletionCallback;
            sample.ParseSample(ans.SliceBytes); // async call
            samples.Add(sample);
#endif
            return(ans);
        }
Ejemplo n.º 4
0
        private void GetSliceTypeAndFrameNumFromH264Payload(StreamDataBlockInfo oneFrameInfo)
        {
            int count = oneFrameInfo.SliceSize;
              _reader.BaseStream.Position = (long)oneFrameInfo.StreamOffset;
              BinaryReader binReader = new BinaryReader(_reader.BaseStream);
              byte[] buf = _reader.ReadBytes(count);
              H264Sample sample = new H264Sample(_sps, _pps, count);
              sample.ParseSample(buf);

              oneFrameInfo.CTS = (ulong)sample.FrameNum;
              if (sample.SliceType == SliceTypes.B)
            oneFrameInfo.SliceType = SliceType.BFrame;
              else if (sample.SliceType == SliceTypes.I)
            oneFrameInfo.SliceType = SliceType.IFrame;
              else
            oneFrameInfo.SliceType = SliceType.DFrame;
        }
Ejemplo n.º 5
0
 private void CompletionCallback(H264Sample sample)
 {
     samples.Remove(sample);
 }
Ejemplo n.º 6
0
 private void CompletionCallback(H264Sample sample)
 {
     samples.Remove(sample);
 }