[FFmpeg-cvslog] frame: add a function for removing side data from a frame
Anton Khirnov
git at videolan.org
Mon Mar 24 15:00:14 CET 2014
ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Wed Feb 19 20:11:21 2014 +0100| [d161ae0a37900cbd36c1390ca32a56b892c02ab5] | committer: Anton Khirnov
frame: add a function for removing side data from a frame
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d161ae0a37900cbd36c1390ca32a56b892c02ab5
---
doc/APIchanges | 4 ++++
libavutil/frame.c | 16 ++++++++++++++++
libavutil/frame.h | 6 ++++++
libavutil/version.h | 2 +-
4 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index afeec8c..d800253 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -13,6 +13,10 @@ libavutil: 2013-12-xx
API changes, most recent first:
+2014-02-xx - xxxxxxx - lavu 53.08.0 - frame.h
+ Add av_frame_remove_side_data() for removing a single side data
+ instance from a frame.
+
2014-02-xx - xxxxxxx - lavu 53.07.0 - frame.h, replaygain.h
Add AV_FRAME_DATA_REPLAYGAIN for exporting replaygain tags.
Add a new header replaygain.h with the AVReplayGain struct.
diff --git a/libavutil/frame.c b/libavutil/frame.c
index f81bbbd..cc4bfcd 100644
--- a/libavutil/frame.c
+++ b/libavutil/frame.c
@@ -526,3 +526,19 @@ int av_frame_copy(AVFrame *dst, const AVFrame *src)
return AVERROR(EINVAL);
}
+
+void av_frame_remove_side_data(AVFrame *frame, enum AVFrameSideDataType type)
+{
+ int i;
+
+ for (i = 0; i < frame->nb_side_data; i++) {
+ AVFrameSideData *sd = frame->side_data[i];
+ if (sd->type == type) {
+ av_freep(&sd->data);
+ av_dict_free(&sd->metadata);
+ av_freep(&frame->side_data[i]);
+ frame->side_data[i] = frame->side_data[frame->nb_side_data - 1];
+ frame->nb_side_data--;
+ }
+ }
+}
diff --git a/libavutil/frame.h b/libavutil/frame.h
index e9bc6ae..3bec8e5 100644
--- a/libavutil/frame.h
+++ b/libavutil/frame.h
@@ -563,6 +563,12 @@ AVFrameSideData *av_frame_get_side_data(const AVFrame *frame,
enum AVFrameSideDataType type);
/**
+ * If side data of the supplied type exists in the frame, free it and remove it
+ * from the frame.
+ */
+void av_frame_remove_side_data(AVFrame *frame, enum AVFrameSideDataType type);
+
+/**
* @}
*/
diff --git a/libavutil/version.h b/libavutil/version.h
index d680979..7f439d7 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -54,7 +54,7 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 53
-#define LIBAVUTIL_VERSION_MINOR 7
+#define LIBAVUTIL_VERSION_MINOR 8
#define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
More information about the ffmpeg-cvslog
mailing list