On Sun, Oct 2, 2016 at 11:08 PM, Timo Rothenpieler
<t...@rothenpieler.org> wrote:
> ---
>  libavcodec/cuvid.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/libavcodec/cuvid.c b/libavcodec/cuvid.c
> index e9a1dd7..5ceb94e 100644
> --- a/libavcodec/cuvid.c
> +++ b/libavcodec/cuvid.c
> @@ -451,25 +451,25 @@ static int cuvid_output_frame(AVCodecContext *avctx, 
> AVFrame *frame)
>          frame->width = avctx->width;
>          frame->height = avctx->height;
>          if (avctx->pkt_timebase.num && avctx->pkt_timebase.den)
> -            frame->pts = av_rescale_q(parsed_frame.dispinfo.timestamp, 
> (AVRational){1, 10000000}, avctx->pkt_timebase);
> +            frame->pkt_pts = av_rescale_q(parsed_frame.dispinfo.timestamp, 
> (AVRational){1, 10000000}, avctx->pkt_timebase);
>          else
> -            frame->pts = parsed_frame.dispinfo.timestamp;
> +            frame->pkt_pts = parsed_frame.dispinfo.timestamp;
>
>          if (parsed_frame.second_field) {
>              if (ctx->prev_pts == INT64_MIN) {
> -                ctx->prev_pts = frame->pts;
> -                frame->pts += (avctx->pkt_timebase.den * 
> avctx->framerate.den) / (avctx->pkt_timebase.num * avctx->framerate.num);
> +                ctx->prev_pts = frame->pkt_pts;
> +                frame->pkt_pts += (avctx->pkt_timebase.den * 
> avctx->framerate.den) / (avctx->pkt_timebase.num * avctx->framerate.num);
>              } else {
> -                int pts_diff = (frame->pts - ctx->prev_pts) / 2;
> -                ctx->prev_pts = frame->pts;
> -                frame->pts += pts_diff;
> +                int pts_diff = (frame->pkt_pts - ctx->prev_pts) / 2;
> +                ctx->prev_pts = frame->pkt_pts;
> +                frame->pkt_pts += pts_diff;
>              }
>          }
>
>          /* CUVIDs opaque reordering breaks the internal pkt logic.
>           * So set pkt_pts and clear all the other pkt_ fields.
>           */
> -        frame->pkt_pts = frame->pts;
> +        av_frame_set_best_effort_timestamp(frame, frame->pkt_pts);
>          av_frame_set_pkt_pos(frame, -1);
>          av_frame_set_pkt_duration(frame, 0);
>          av_frame_set_pkt_size(frame, -1);
> --
> 2.10.0
>

Please just leave the pts stuff as-is, or we'll have to undo these
changes right in the next merge again, which deprecates pkt_pts and
favors using AVFrame.pts for decoding as well (less redundant fields).
Setting both for the time being should not have any negative effects.

Settings best effort in addition seems slightly weird, do any other
decoders actually set that by themself?

- Hendrik
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to