API changes, most recent first:
-2018-02-xx - xxxxxxx - lavfi 7.1.0 - avfilter.h
++2018-02-xx - xxxxxxx - lavfi 7.12.100 - avfilter.h
+ Add AVFilterContext.extra_hw_frames.
+
-2018-02-xx - xxxxxxx - lavc 58.9.0 - avcodec.h
+2018-02-xx - xxxxxxx - lavc 58.11.100 - avcodec.h
Add AVCodecContext.extra_hw_frames.
-2017-xx-xx - xxxxxxx - lavc 58.8.0 - avcodec.h
+2018-02-06 - 0fd475704e - lavd 58.1.100 - avdevice.h
+ Deprecate use of av_input_audio_device_next(), av_input_video_device_next(),
+ av_output_audio_device_next(), av_output_video_device_next().
+ Add av_indev_iterate(), and av_outdev_iterate().
+
+2018-xx-xx - xxxxxxx - lavf 58.9.100 - avformat.h
+ Deprecate use of av_register_input_format(), av_register_output_format(),
+ av_register_all(), av_iformat_next(), av_oformat_next().
+ Add av_demuxer_iterate(), and av_muxer_iterate().
+
+2018-xx-xx - xxxxxxx - lavc 58.10.100 - avcodec.h
+ Deprecate use of avcodec_register(), avcodec_register_all(),
+ av_codec_next(), av_register_codec_parser(), and av_parser_next().
+ Add av_codec_iterate() and av_parser_iterate().
+
+2018-02-xx - xxxxxxx - lavf 58.8.100 - avformat.h
+ Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"
+ options. Introduce "listen_timeout" as replacement for the current "timeout"
+ option, and "user_agent" as replacement for "user-agent". Once the deprecation
+ is over, the old "timeout" option will be removed, and "stimeout" will be
+ renamed to "stimeout" (the "timeout" option will essentially change semantics).
+
+2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
+ Deprecate AVFormatContext filename field which had limited length, use the
+ new dynamically allocated url field instead.
+
+2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
+ Add url field to AVFormatContext and add ff_format_set_url helper function.
+
+2018-01-xx - xxxxxxx - lavf 58.6.100 - avformat.h
+ Add AVFMTCTX_UNSEEKABLE (for HLS demuxer).
+
+2018-xx-xx - xxxxxxx - lavu 56.9.100 - aes_ctr.h
+ Add method to set the 16-byte IV.
+
+2018-01-xx - xxxxxxx - lavf 58.5.100 - avformat.h
+ Explicitly make avformat_network_init() and avformat_network_deinit() optional.
+ If these are not called, network initialization and deinitialization is
+ automatic, and unlike in older versions, fully supported, unless libavformat
+ is linked to ancient GnuTLS and OpenSSL.
+
+2018-01-xx - xxxxxxx - lavf 58.4.100 - avformat.h
+ Deprecate AVStream.recommended_encoder_configuration. It was useful only for
+ FFserver, which has been removed.
+
+2018-01-xx - xxxxxxx - lavfi 7.11.101 - avfilter.h
+ Deprecate avfilter_link_get_channels(). Use av_buffersink_get_channels().
+
+2017-xx-xx - xxxxxxx - lavr 4.0.0 - avresample.h
+ Deprecate the entire library. Merged years ago to provide compatibility
+ with Libav, it remained unmaintained by the FFmpeg project and duplicated
+ functionality provided by libswresample.
+
+ In order to improve consistency and reduce attack surface, it has been deprecated.
+ Users of this library are asked to migrate to libswresample, which, as well as
+ providing more functionality, is faster and has higher accuracy.
+
+2017-xx-xx - xxxxxxx - lavc 58.9.100 - avcodec.h
+ Deprecate av_lockmgr_register(). You need to build FFmpeg with threading
+ support enabled to get basic thread-safety (which is the default build
+ configuration).
+
+2017-12-xx - xxxxxxx - lavu 56.7.100 - cpu.h
+ AVX-512 flags added.
+
+2017-xx-xx - xxxxxxx - lavc 58.8.100 - avcodec.h
+ The MediaCodec decoders now support AVCodecContext.hw_device_ctx.
+
+2017-xx-xx - xxxxxxx - lavu 56.6.100 - hwcontext.h hwcontext_mediacodec.h
+ Add AV_HWDEVICE_TYPE_MEDIACODEC and a new installed header with
+ MediaCodec-specific hwcontext definitions.
+
+2017-xx-xx - xxxxxxc - lavc 58.7.100 - avcodec.h
+ Add AV_CODEC_CAP_HARDWARE, AV_CODEC_CAP_HYBRID, and AVCodec.wrapper_name,
+ and mark all AVCodecs accordingly.
+
+2017-xx-xx - xxxxxxx - lavu 56.4.100 / 56.7.0 - stereo3d.h
+ Add view field to AVStereo3D structure and AVStereo3DView enum.
+
+2017-xx-xx - xxxxxxx - lavc 58.6.100 - avcodec.h
Add const to AVCodecContext.hwaccel.
-2017-xx-xx - xxxxxxx - lavc 58.7.0 - avcodec.h
+2017-11-xx - xxxxxxx - lavc 58.5.100 - avcodec.h
Deprecate user visibility of the AVHWAccel structure and the functions
av_register_hwaccel() and av_hwaccel_next().
{ "thread_type", "Allowed thread types", OFFSET(thread_type), AV_OPT_TYPE_FLAGS,
{ .i64 = AVFILTER_THREAD_SLICE }, 0, INT_MAX, FLAGS, "thread_type" },
{ "slice", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AVFILTER_THREAD_SLICE }, .unit = "thread_type" },
+ { "enable", "set enable expression", OFFSET(enable_str), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS },
+ { "threads", "Allowed number of threads", OFFSET(nb_threads), AV_OPT_TYPE_INT,
+ { .i64 = 0 }, 0, INT_MAX, FLAGS },
+ { "extra_hw_frames", "Number of extra hardware frames to allocate for the user",
+ OFFSET(extra_hw_frames), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, FLAGS },
{ NULL },
};
*/
#define FF_FILTER_FLAG_HWFRAME_AWARE (1 << 0)
-
+/**
+ * Run one round of processing on a filter graph.
+ */
+int ff_filter_graph_run_once(AVFilterGraph *graph);
+
+/**
+ * Normalize the qscale factor
+ * FIXME the H264 qscale is a log based scale, mpeg1/2 is not, the code below
+ * cannot be optimal
+ */
+static inline int ff_norm_qscale(int qscale, int type)
+{
+ switch (type) {
+ case FF_QSCALE_TYPE_MPEG1: return qscale;
+ case FF_QSCALE_TYPE_MPEG2: return qscale >> 1;
+ case FF_QSCALE_TYPE_H264: return qscale >> 2;
+ case FF_QSCALE_TYPE_VP56: return (63 - qscale + 2) >> 2;
+ }
+ return qscale;
+}
+
+/**
+ * Get number of threads for current filter instance.
+ * This number is always same or less than graph->nb_threads.
+ */
+int ff_filter_get_nb_threads(AVFilterContext *ctx);
+
+ /**
+ * Perform any additional setup required for hardware frames.
+ *
+ * link->hw_frames_ctx must be set before calling this function.
+ * Inside link->hw_frames_ctx, the fields format, sw_format, width and
+ * height must be set. If dynamically allocated pools are not supported,
+ * then initial_pool_size must also be set, to the minimum hardware frame
+ * pool size necessary for the filter to work (taking into account any
+ * frames which need to stored for use in operations as appropriate). If
+ * default_pool_size is nonzero, then it will be used as the pool size if
+ * no other modification takes place (this can be used to preserve
+ * compatibility).
+ */
+ int ff_filter_init_hw_frames(AVFilterContext *avctx, AVFilterLink *link,
+ int default_pool_size);
+
#endif /* AVFILTER_INTERNAL_H */