*/
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.
*
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)
{