On 12/09/2013 07:41 PM, Tim Walker wrote:
Includes a libavcodec utility function to update a frame's side data.
---
doc/APIchanges | 4 ++++
libavcodec/internal.h | 7 +++++++
libavcodec/utils.c | 20 ++++++++++++++++++++
libavutil/frame.h | 4 ++++
libavutil/version.h | 2 +-
5 files changed, 36 insertions(+), 1 deletion(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index 6771a7d..8d35e8e 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -13,6 +13,10 @@ libavutil: 2012-10-22
API changes, most recent first:
+2013-12-xx - xxxxxxx - lavu 52.22.0 - frame.h
+ Add AV_FRAME_DATA_MATRIXENCODING value to the AVFrameSideDataType enum, which
+ identifies AVMatrixEncoding data.
+
2013-12-xx - xxxxxxx - lavu 52.21.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 c4f0981..9f7213c 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 89d78dd..3ce9917 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;
+}
Looks ok in general. Maybe it would be useful to make this public in
libavutil, either now or at some point in the future, e.g. when we add
support in the (E)AC-3 encoders.
+
#if HAVE_NEON || ARCH_PPC || HAVE_MMX
# define STRIDE_ALIGN 16
#else
diff --git a/libavutil/frame.h b/libavutil/frame.h
index 1b3db98..b28534d 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.
defined in libavutil/channel_layout.h
+ */
+ AV_FRAME_DATA_MATRIXENCODING,
};
typedef struct AVFrameSideData {
diff --git a/libavutil/version.h b/libavutil/version.h
index 36c89d8..b60f7c4 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -37,7 +37,7 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 52
-#define LIBAVUTIL_VERSION_MINOR 21
+#define LIBAVUTIL_VERSION_MINOR 22
#define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel