[FFmpeg-devel] [PATCH] avformat/avformat.h: Add av_stream_remove_side_data.

Jacob Trimble modmaker at google.com
Tue Jun 26 02:03:32 EEST 2018


Signed-off-by: Jacob Trimble <modmaker at google.com>
---
 libavformat/avformat.h |  8 ++++++++
 libavformat/utils.c    | 11 +++++++++++
 2 files changed, 19 insertions(+)

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index fdaffa5bf4..434c88837e 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -2167,6 +2167,14 @@ AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c);
 int av_stream_add_side_data(AVStream *st, enum AVPacketSideDataType type,
                             uint8_t *data, size_t size);
 
+/**
+ * Removes any existing side data of the given type.
+ *
+ * @param st stream
+ * @param type side information type
+ */
+void av_stream_remove_side_data(AVStream *st, enum AVPacketSideDataType type);
+
 /**
  * Allocate new information from stream.
  *
diff --git a/libavformat/utils.c b/libavformat/utils.c
index c9cdd2b470..4f7c408d93 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -5491,6 +5491,17 @@ int av_stream_add_side_data(AVStream *st, enum AVPacketSideDataType type,
     return 0;
 }
 
+void av_stream_remove_side_data(AVStream *st, enum AVPacketSideDataType type)
+{
+  for (int i = 0; i < st->nb_side_data; i++) {
+      if (st->side_data[i].type == type) {
+          av_freep(&st->side_data[i].data);
+          st->side_data[i] = st->side_data[st->nb_side_data - 1];
+          st->nb_side_data--;
+      }
+  }
+}
+
 uint8_t *av_stream_new_side_data(AVStream *st, enum AVPacketSideDataType type,
                                  int size)
 {
-- 
2.18.0.rc2.346.g013aa6912e-goog



More information about the ffmpeg-devel mailing list