mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +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:
parent
0a6bb7da55
commit
4397f9a5a0
@ -14,6 +14,9 @@ libavutil: 2021-04-27
|
||||
|
||||
API changes, most recent first:
|
||||
|
||||
2022-07-xx - xxxxxxxxxx - lavu 57.30.100 - frame.h
|
||||
Add AVFrame.duration, deprecate AVFrame.pkt_duration.
|
||||
|
||||
-------- 8< --------- FFmpeg 5.1 was cut here -------- 8< ---------
|
||||
|
||||
2022-06-12 - 7cae3d8b76 - lavf 59.25.100 - avio.h
|
||||
|
@ -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;
|
||||
|
@ -604,13 +604,18 @@ typedef struct AVFrame {
|
||||
*/
|
||||
int64_t pkt_pos;
|
||||
|
||||
#if FF_API_PKT_DURATION
|
||||
/**
|
||||
* duration of the corresponding packet, expressed in
|
||||
* AVStream->time_base units, 0 if unknown.
|
||||
* - encoding: unused
|
||||
* - decoding: Read by user.
|
||||
*
|
||||
* @deprecated use duration instead
|
||||
*/
|
||||
attribute_deprecated
|
||||
int64_t pkt_duration;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* metadata.
|
||||
@ -702,6 +707,11 @@ typedef struct AVFrame {
|
||||
* Channel layout of the audio data.
|
||||
*/
|
||||
AVChannelLayout ch_layout;
|
||||
|
||||
/**
|
||||
* Duration of the frame, in the same units as pts. 0 if unknown.
|
||||
*/
|
||||
int64_t duration;
|
||||
} AVFrame;
|
||||
|
||||
|
||||
|
@ -79,7 +79,7 @@
|
||||
*/
|
||||
|
||||
#define LIBAVUTIL_VERSION_MAJOR 57
|
||||
#define LIBAVUTIL_VERSION_MINOR 29
|
||||
#define LIBAVUTIL_VERSION_MINOR 30
|
||||
#define LIBAVUTIL_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||
@ -114,6 +114,7 @@
|
||||
#define FF_API_XVMC (LIBAVUTIL_VERSION_MAJOR < 58)
|
||||
#define FF_API_OLD_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_MAJOR < 58)
|
||||
#define FF_API_AV_FOPEN_UTF8 (LIBAVUTIL_VERSION_MAJOR < 58)
|
||||
#define FF_API_PKT_DURATION (LIBAVUTIL_VERSION_MAJOR < 58)
|
||||
|
||||
/**
|
||||
* @}
|
||||
|
Loading…
Reference in New Issue
Block a user