OSDN Git Service

avframe: add AV_FRAME_DATA_MATRIXENCODING side data type.
authorTim Walker <tdskywalker@gmail.com>
Wed, 11 Dec 2013 02:03:29 +0000 (02:03 +0000)
committerTim Walker <tdskywalker@gmail.com>
Sun, 5 Jan 2014 15:41:56 +0000 (16:41 +0100)
Includes a libavcodec utility function to update a frame's side data.

doc/APIchanges
libavcodec/internal.h
libavcodec/utils.c
libavutil/frame.h
libavutil/version.h

index 376a745..1152ecd 100644 (file)
@@ -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.
 
index c4f0981..9f7213c 100644 (file)
@@ -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 */
index 1fa9cb8..d744bba 100644 (file)
@@ -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
index 16e2177..b025165 100644 (file)
@@ -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 {
index 01c932c..e95d77c 100644 (file)
@@ -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, \