diff --git a/doc/APIchanges b/doc/APIchanges index 376a74590d65fd19c62bca6a75dc7b988e92e617..1152ecd582a58bdc76ee75d31daffd7b1c7b34a4 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,6 +13,10 @@ libavutil: 2013-12-xx API changes, most recent first: +2013-12-xx - xxxxxxx - lavu 53.2.0 - frame.h + Add AV_FRAME_DATA_MATRIXENCODING value to the AVFrameSideDataType enum, which + identifies AVMatrixEncoding data. + 2013-12-xx - xxxxxxx - lavu 53.1.0 - channel_layout.h Add values for various Dolby flags to the AVMatrixEncoding enum. diff --git a/libavcodec/internal.h b/libavcodec/internal.h index c4f0981ba867a1d6b3ad6f6378f690ce26d81adc..9f7213c17decbfd37437a2135e289f501bad9e56 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -27,6 +27,7 @@ #include <stdint.h> #include "libavutil/buffer.h" +#include "libavutil/channel_layout.h" #include "libavutil/mathematics.h" #include "libavutil/pixfmt.h" #include "avcodec.h" @@ -179,4 +180,10 @@ const uint8_t *avpriv_find_start_code(const uint8_t *restrict p, */ int ff_set_dimensions(AVCodecContext *s, int width, int height); +/** + * Add or update AV_FRAME_DATA_MATRIXENCODING side data. + */ +int ff_side_data_update_matrix_encoding(AVFrame *frame, + enum AVMatrixEncoding matrix_encoding); + #endif /* AVCODEC_INTERNAL_H */ diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 1fa9cb88d285a6e6971167290d63a3e1b0ea7703..d744bbacd2ffe5404c118deb7ce8f8c099052e8c 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -151,6 +151,26 @@ int ff_set_dimensions(AVCodecContext *s, int width, int height) return ret; } +int ff_side_data_update_matrix_encoding(AVFrame *frame, + enum AVMatrixEncoding matrix_encoding) +{ + AVFrameSideData *side_data; + enum AVMatrixEncoding *data; + + side_data = av_frame_get_side_data(frame, AV_FRAME_DATA_MATRIXENCODING); + if (!side_data) + side_data = av_frame_new_side_data(frame, AV_FRAME_DATA_MATRIXENCODING, + sizeof(enum AVMatrixEncoding)); + + if (!side_data) + return AVERROR(ENOMEM); + + data = (enum AVMatrixEncoding*)side_data->data; + *data = matrix_encoding; + + return 0; +} + #if HAVE_NEON || ARCH_PPC || HAVE_MMX # define STRIDE_ALIGN 16 #else diff --git a/libavutil/frame.h b/libavutil/frame.h index 16e2177bd2612de4bb4d42cea0c6fd302af6a925..b02516592ff73e03de0c22c283f823041fb54ce4 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -46,6 +46,10 @@ enum AVFrameSideDataType { * The data is the AVStereo3D struct defined in libavutil/stereo3d.h. */ AV_FRAME_DATA_STEREO3D, + /** + * The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h. + */ + AV_FRAME_DATA_MATRIXENCODING, }; typedef struct AVFrameSideData { diff --git a/libavutil/version.h b/libavutil/version.h index 01c932cde3f7e7276b50672c0dbf1fa92ccc2856..e95d77c600bc9c66ac3c8fdb0aef76f721c8500c 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -54,7 +54,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 53 -#define LIBAVUTIL_VERSION_MINOR 1 +#define LIBAVUTIL_VERSION_MINOR 2 #define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \