aviad rozenhek <[email protected]> writes:

> 2011/6/27 Måns Rullgård <[email protected]>
>
>> Luca Barbato <[email protected]> writes:
>>
>> > If the Continuity Check fails drop the whole packet
>> > ---
>> >  libavformat/mpegts.c |    5 ++++-
>> >  1 files changed, 4 insertions(+), 1 deletions(-)
>> >
>> > diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
>> > index f2ae567..05bc4dc 100644
>> > --- a/libavformat/mpegts.c
>> > +++ b/libavformat/mpegts.c
>> > @@ -1267,7 +1267,10 @@ static int handle_packet(MpegTSContext *ts, const
>> uint8_t *packet)
>> >      cc = (packet[3] & 0xf);
>> >      cc_ok = (tss->last_cc < 0) || ((((tss->last_cc + 1) & 0x0f) == cc));
>> >      tss->last_cc = cc;
>> > -
>> > +    if (!cc_ok) {
>> > +        av_log(NULL, AV_LOG_WARNING, "Continuity Check Failed\n");
>> > +        return -1;
>> > +    }
>> >      /* skip adaptation field */
>> >      afc = (packet[3] >> 4) & 3;
>> >      p = packet + 4;
>> > --
>>
>> I still consider this overkill.  The packet could contain any number of
>> undamaged frames which would be needlessly discarded with this change.
>>
>>
> Perhaps I'm wrong, but as I understand video encapsulation in TS:
>
>    1. a PES packet is simply a single compressed video frame

No.  PES boundaries are entirely independent of video frame boundaries.
There is a flag that can be set to indicate that they do coincide, but
this is very rarely used.

-- 
Måns Rullgård
[email protected]
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to