[FFmpeg-devel] [PATCH]Fix bug in setting the pts when decoding or transcoding Dirac video wrapped in MPEG-TS using libschroedingerdec.c

Anuradha Suraparaju asuraparaju
Tue Nov 23 05:15:03 CET 2010


Hi,

On Fri, Nov 19, 2010 at 5:50 PM, Reimar D?ffinger
<Reimar.Doeffinger at gmx.de>wrote:

> On Fri, Nov 19, 2010 at 02:05:38PM +1100, Anuradha Suraparaju wrote:
> > +
> > +            if (avpkt->pts != AV_NOPTS_VALUE) {
> > +                FfmpegSchroPktTS *pktts =
> av_mallocz(sizeof(FfmpegSchroPktTS));
> > +                pktts->pts = avccontext->reordered_opaque;
> > +                pktts->dts = avpkt->dts;
> > +                enc_buf->tag = schro_tag_new(pktts, av_free);
> > +            } else {
> > +                if (SCHRO_PARSE_CODE_IS_PICTURE(enc_buf->data[4])) {
> > +                    FfmpegSchroPktTS *pktts =
> av_mallocz(sizeof(FfmpegSchroPktTS));
> > +                    int frame_number = AV_RB32(enc_buf->data + 13);
> > +                    if (p_schro_params->format->interlaced_coding)
> > +                       frame_number >>= 1;
> > +                    pktts->pts = av_rescale_q(frame_number,
> avccontext->time_base, AV_TIME_BASE_Q);
> > +                    pktts->dts = avpkt->dts;
> > +                    enc_buf->tag = schro_tag_new(pktts, av_free);
> > +                }
> > +            }
> >              state = schro_decoder_push(decoder, enc_buf);
> >              if (state == SCHRO_DECODER_FIRST_ACCESS_UNIT)
> >                  libschroedinger_handle_first_access_unit(avccontext);
> [...]
> > +        if (f->p_tag) {
> > +            FfmpegSchroPktTS *pktts = f->p_tag->value;
> > +            picture->reordered_opaque = pktts->pts;
> > +        } else {
> > +            picture->reordered_opaque = AV_NOPTS_VALUE;
> > +        }
>
> You can't set reordered_opaque to arbitrary values either.
> An application might e.g. have put an array index to additional
> frame data (e.g. user data it needs to splice in), the encoder
> making up its own values would cause such an application to crash.
>

But this is in the decoder and not encoder. reordered_opaque is being set to
the pts of the decoded frame and not an arbitrary value. If the objection is
to setting reordered_opaque to AV_NOPTS_VALUE, I'll omit that.

Regards,
Anuradha

> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at mplayerhq.hu
> https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel
>



More information about the ffmpeg-devel mailing list