Commit 5b4797a2 authored by Tim Walker's avatar Tim Walker

avframe: add AV_FRAME_DATA_MATRIXENCODING side data type.

Includes a libavcodec utility function to update a frame's side data.
parent 5c437fb6
...@@ -13,6 +13,10 @@ libavutil: 2013-12-xx ...@@ -13,6 +13,10 @@ libavutil: 2013-12-xx
API changes, most recent first: 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 2013-12-xx - xxxxxxx - lavu 53.1.0 - channel_layout.h
Add values for various Dolby flags to the AVMatrixEncoding enum. Add values for various Dolby flags to the AVMatrixEncoding enum.
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <stdint.h> #include <stdint.h>
#include "libavutil/buffer.h" #include "libavutil/buffer.h"
#include "libavutil/channel_layout.h"
#include "libavutil/mathematics.h" #include "libavutil/mathematics.h"
#include "libavutil/pixfmt.h" #include "libavutil/pixfmt.h"
#include "avcodec.h" #include "avcodec.h"
...@@ -179,4 +180,10 @@ const uint8_t *avpriv_find_start_code(const uint8_t *restrict p, ...@@ -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); 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 */ #endif /* AVCODEC_INTERNAL_H */
...@@ -151,6 +151,26 @@ int ff_set_dimensions(AVCodecContext *s, int width, int height) ...@@ -151,6 +151,26 @@ int ff_set_dimensions(AVCodecContext *s, int width, int height)
return ret; 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 #if HAVE_NEON || ARCH_PPC || HAVE_MMX
# define STRIDE_ALIGN 16 # define STRIDE_ALIGN 16
#else #else
......
...@@ -46,6 +46,10 @@ enum AVFrameSideDataType { ...@@ -46,6 +46,10 @@ enum AVFrameSideDataType {
* The data is the AVStereo3D struct defined in libavutil/stereo3d.h. * The data is the AVStereo3D struct defined in libavutil/stereo3d.h.
*/ */
AV_FRAME_DATA_STEREO3D, AV_FRAME_DATA_STEREO3D,
/**
* The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h.
*/
AV_FRAME_DATA_MATRIXENCODING,
}; };
typedef struct AVFrameSideData { typedef struct AVFrameSideData {
......
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
*/ */
#define LIBAVUTIL_VERSION_MAJOR 53 #define LIBAVUTIL_VERSION_MAJOR 53
#define LIBAVUTIL_VERSION_MINOR 1 #define LIBAVUTIL_VERSION_MINOR 2
#define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment