Hi,

On Mon, Aug 1, 2011 at 9:27 AM, Luca Barbato <[email protected]> wrote:
> From: Zohar Kelrich <[email protected]>
>
> Signed-off-by: Zohar Kelrich <[email protected]>
> Signed-off-by: Luca Barbato <[email protected]>
> ---
>  libavformat/mpegts.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
> index f3b76aa..4685d74 100644
> --- a/libavformat/mpegts.c
> +++ b/libavformat/mpegts.c
> @@ -164,6 +164,7 @@ typedef struct PESContext {
>     enum MpegTSState state;
>     /* used to get the format */
>     int data_index;
> +    int flags; /**< copied to the AVPacket flags */
>     int total_size;
>     int pes_header_size;
>     int extended_stream_id;
> @@ -635,12 +636,14 @@ static void new_pes_packet(PESContext *pes, AVPacket 
> *pkt)
>     pkt->dts = pes->dts;
>     /* store position of first TS packet of this PES packet */
>     pkt->pos = pes->ts_packet_pos;
> +    pkt->flags = pes->flags;
>
>     /* reset pts values */
>     pes->pts = AV_NOPTS_VALUE;
>     pes->dts = AV_NOPTS_VALUE;
>     pes->buffer = NULL;
>     pes->data_index = 0;
> +    pes->flags = 0;
>  }
>
>  /* return non zero if a packet could be constructed */
> @@ -808,6 +811,7 @@ static int mpegts_push_data(MpegTSFilter *filter,
>                     // pes packet size is < ts size packet and pes data is 
> padded with 0xff
>                     // not sure if this is legal in ts but see issue #2392
>                     buf_size = pes->total_size;
> +                    pes->flags |= AV_PKT_FLAG_CORRUPT;
>                 }
>                 memcpy(pes->buffer+pes->data_index, p, buf_size);
>                 pes->data_index += buf_size;
> @@ -1283,6 +1287,11 @@ static int handle_packet(MpegTSContext *ts, const 
> uint8_t *packet)
>             || expected_cc == cc;
>
>     tss->last_cc = cc;
> +    if (!cc_ok) {
> +        av_log(NULL, AV_LOG_WARNING, "Continuity Check Failed\n");
> +        if(tss->type == MPEGTS_PES)
> +            ((PESContext*)(tss->u.pes_filter.opaque))->flags |= 
> AV_PKT_FLAG_CORRUPT;
> +    }

I really don't like this kind of magic. Can't you assign a PESContext
variable so that this line is a little bit more sane?

Otherwise OK.

Ronald
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to