1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-07-16 22:42:38 +02:00

lavu/frame: add a duration field to AVFrame

The only duration field currently present in AVFrame is pkt_duration,
which is semantically restricted to those frames that are output by
decoders.

Add a new field that stores the frame's duration without regard for how
that frame was produced. Deprecate pkt_duration.
This commit is contained in:
Anton Khirnov
2022-07-11 10:04:17 +02:00
parent 0a6bb7da55
commit 4397f9a5a0
4 changed files with 25 additions and 1 deletions

View File

@ -59,7 +59,12 @@ static void get_frame_defaults(AVFrame *frame)
frame->pts =
frame->pkt_dts = AV_NOPTS_VALUE;
frame->best_effort_timestamp = AV_NOPTS_VALUE;
frame->duration = 0;
#if FF_API_PKT_DURATION
FF_DISABLE_DEPRECATION_WARNINGS
frame->pkt_duration = 0;
FF_ENABLE_DEPRECATION_WARNINGS
#endif
frame->pkt_pos = -1;
frame->pkt_size = -1;
frame->time_base = (AVRational){ 0, 1 };
@ -283,6 +288,7 @@ static int frame_copy_props(AVFrame *dst, const AVFrame *src, int force_copy)
dst->crop_left = src->crop_left;
dst->crop_right = src->crop_right;
dst->pts = src->pts;
dst->duration = src->duration;
dst->repeat_pict = src->repeat_pict;
dst->interlaced_frame = src->interlaced_frame;
dst->top_field_first = src->top_field_first;
@ -292,7 +298,11 @@ static int frame_copy_props(AVFrame *dst, const AVFrame *src, int force_copy)
dst->pkt_dts = src->pkt_dts;
dst->pkt_pos = src->pkt_pos;
dst->pkt_size = src->pkt_size;
#if FF_API_PKT_DURATION
FF_DISABLE_DEPRECATION_WARNINGS
dst->pkt_duration = src->pkt_duration;
FF_ENABLE_DEPRECATION_WARNINGS
#endif
dst->time_base = src->time_base;
dst->reordered_opaque = src->reordered_opaque;
dst->quality = src->quality;