diff options
author | James Almer <jamrial@gmail.com> | 2019-10-04 11:54:28 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2020-01-15 23:33:41 -0300 |
commit | 717b2074ecf3ade6b213ee8d67efa23f12a4e67e (patch) | |
tree | aed0c73697a812fb098d16e2d72038fc9e029529 | |
parent | ea5a9106287b85ea702a13e83778f80dab51143b (diff) | |
download | ffmpeg-717b2074ecf3ade6b213ee8d67efa23f12a4e67e.tar.gz |
avcodec: add a Producer Reference Time AVPacketSideData type
Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r-- | doc/APIchanges | 3 | ||||
-rw-r--r-- | libavcodec/avcodec.h | 10 | ||||
-rw-r--r-- | libavcodec/avpacket.c | 22 | ||||
-rw-r--r-- | libavcodec/internal.h | 2 | ||||
-rw-r--r-- | libavcodec/version.h | 4 |
5 files changed, 39 insertions, 2 deletions
diff --git a/doc/APIchanges b/doc/APIchanges index 3c24dc6fbc..2977b00b60 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,9 @@ libavutil: 2017-10-21 API changes, most recent first: +2020-01-15 - xxxxxxxxxx - lavc 58.66.100 - avcodec.h + Add AV_PKT_DATA_PRFT and AVProducerReferenceTime. + 2019-12-27 - xxxxxxxxxx - lavu 56.38.100 - eval.h Add av_expr_count_func(). diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 119b32dc1f..4b0e7c0853 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1176,6 +1176,11 @@ typedef struct AVCPBProperties { uint64_t vbv_delay; } AVCPBProperties; +typedef struct AVProducerReferenceTime { + int64_t wallclock; + int flags; +} AVProducerReferenceTime; + /** * The decoder will keep a reference to the frame and may reuse it later. */ @@ -1411,6 +1416,11 @@ enum AVPacketSideDataType { AV_PKT_DATA_AFD, /** + * Producer Reference Time data corresponding to the AVProducerReferenceTime struct. + */ + AV_PKT_DATA_PRFT, + + /** * The number of side data types. * This is not part of the public API/ABI in the sense that it may * change when new side data types are added. diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index 858f827a0a..74845efcd2 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -741,3 +741,25 @@ int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, i return 0; } + +int ff_side_data_set_prft(AVPacket *pkt, int64_t timestamp) +{ + AVProducerReferenceTime *prft; + uint8_t *side_data; + int side_data_size; + + side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_PRFT, &side_data_size); + if (!side_data) { + side_data_size = sizeof(AVProducerReferenceTime); + side_data = av_packet_new_side_data(pkt, AV_PKT_DATA_PRFT, side_data_size); + } + + if (!side_data || side_data_size < sizeof(AVProducerReferenceTime)) + return AVERROR(ENOMEM); + + prft = (AVProducerReferenceTime *)side_data; + prft->wallclock = timestamp; + prft->flags = 0; + + return 0; +} diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 9db3d36acb..5930dd0da0 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -392,6 +392,8 @@ AVCPBProperties *ff_add_cpb_side_data(AVCodecContext *avctx); int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, int error_count, int pict_type); +int ff_side_data_set_prft(AVPacket *pkt, int64_t timestamp); + /** * Check AVFrame for A53 side data and allocate and fill SEI message with A53 info * diff --git a/libavcodec/version.h b/libavcodec/version.h index 1a88432460..6cf333eeb6 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -28,8 +28,8 @@ #include "libavutil/version.h" #define LIBAVCODEC_VERSION_MAJOR 58 -#define LIBAVCODEC_VERSION_MINOR 65 -#define LIBAVCODEC_VERSION_MICRO 103 +#define LIBAVCODEC_VERSION_MINOR 66 +#define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ |