Le tridi 23 prairial, an CCXXIII, Talgorn François-Xavier a écrit :
>             ret=avcodec_decode_video2(in_stream->codec, yuv_pix->av_frame, 
> &got_something, &orig_pkt);

>                 if(!got_something)
>                 {
>                     INFO(stderr, ":-( Unable to encode yuv frame.\n");
>                     exit(0);
>                 }      

This is wrong. Some codecs may consume hundreds of frames before outputting
a single packet.

>             styl_pkt.pts = av_rescale_q_rnd(orig_pkt.pts, 
> in_stream->time_base, out_stream->time_base, 
> AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
>             styl_pkt.dts = av_rescale_q_rnd(orig_pkt.dts, 
> in_stream->time_base, out_stream->time_base, 
> AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
>             styl_pkt.duration = av_rescale_q(orig_pkt.duration, 
> in_stream->time_base, out_stream->time_base);

This is wrong too: the frame you just encoded does not necessarily come from
orig_pkt. You need to use the timestamp fields in the frame.

In the future, please provide minimal but complete programs. Your program is
not minimal, it contains a lot of code unnecessary to show the problem, and
nor is it complete.

Regards,

-- 
  Nicolas George
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to