[FFmpeg-cvslog] lavf: add internal API to append a bsf to a stream's list

Rodger Combs git at videolan.org
Mon Dec 28 16:11:44 CET 2015


ffmpeg | branch: master | Rodger Combs <rodger.combs at gmail.com> | Wed Oct  7 21:10:08 2015 -0500| [822e80fde39f8992daeab6d51312f27188021d9b] | committer: Rodger Combs

lavf: add internal API to append a bsf to a stream's list

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=822e80fde39f8992daeab6d51312f27188021d9b
---

 libavformat/internal.h |   11 +++++++++++
 libavformat/utils.c    |   22 ++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/libavformat/internal.h b/libavformat/internal.h
index 0e59da0..2cb3481 100644
--- a/libavformat/internal.h
+++ b/libavformat/internal.h
@@ -465,6 +465,17 @@ enum AVChromaLocation ff_choose_chroma_location(AVFormatContext *s, AVStream *st
 int ff_generate_avci_extradata(AVStream *st);
 
 /**
+ * Add a bitstream filter to a stream.
+ *
+ * @param st output stream to add a filter to
+ * @param name the name of the filter to add
+ * @param args filter-specific argument string
+ * @return  >0 on success;
+ *          AVERROR code on failure
+ */
+int ff_stream_add_bitstream_filter(AVStream *st, const char *name, const char *args);
+
+/**
  * Wrap errno on rename() error.
  *
  * @param oldpath source path
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 7e101a4..95acbf3 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -4651,6 +4651,28 @@ uint8_t *av_stream_new_side_data(AVStream *st, enum AVPacketSideDataType type,
     return data;
 }
 
+int ff_stream_add_bitstream_filter(AVStream *st, const char *name, const char *args)
+{
+    AVBitStreamFilterContext *bsfc = NULL;
+    AVBitStreamFilterContext **dest = &st->internal->bsfc;
+    while (*dest && (*dest)->next)
+        dest = &(*dest)->next;
+
+    if (!(bsfc = av_bitstream_filter_init(name))) {
+        av_log(NULL, AV_LOG_ERROR, "Unknown bitstream filter '%s'\n", name);
+        return AVERROR(EINVAL);
+    }
+    if (args && !(bsfc->args = av_strdup(args))) {
+        av_bitstream_filter_close(bsfc);
+        return AVERROR(ENOMEM);
+    }
+    av_log(st->codec, AV_LOG_VERBOSE,
+           "Automatically inserted bitstream filter '%s'; args='%s'\n",
+           name, args ? args : "");
+    *dest = bsfc;
+    return 1;
+}
+
 int av_apply_bitstream_filters(AVCodecContext *codec, AVPacket *pkt,
                                AVBitStreamFilterContext *bsfc)
 {



More information about the ffmpeg-cvslog mailing list