cReceiver vs cFilter and PTS questions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Patrick Fischer wrote:
> void cMyReceiver::Receive(uchar *Data, int Length)
> {
>     int pid = ((Data[1] & 0x1f) << 8) | (Data[2]);
>     if (pid == m_VideoPid) {
>         uint8_t off = 0;
>         if (Data[3] & ADAPT_FIELD) {
>            off = Data[4] + 1;
>            }
>           printf("vpts : %fs\n",trans_pts_dts( (uint8_t*)(Data + 4 +
> off)+9)/90000.);
>    }
> }

>From standard, I miss the following checks:
- Is there payload in this TS packet?
- Does a new PES packet start with this TS packet?
  (payload_unit_start_indicator)
- Does the payload start with 00 00 01 PES header prefix?
- Does the stream_id refer to an A/V stream with full headers?
  (well, if VideoPid is valid, this should be expected)
- Is the PTS field present in the PES header?

With these assumptions, Data+4+off points to the PES header, and
PESheader+9 points to the PTS.

Cheers,

Udo



[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux