[FFmpeg-devel] [libav-devel] [PATCH 2/2] lavfi: add layout negotiation fields and helper functions.
Stefano Sabatini
stefano.sabatini-lala at poste.it
Thu Jun 9 16:31:19 CEST 2011
On date Thursday 2011-06-09 13:27:50 +0300, Mina Nagy Zaki encoded:
>
> ---
> libavfilter/avfilter.c | 3 ++
> libavfilter/avfilter.h | 30 +++++++++++++++++-------
> libavfilter/avfiltergraph.c | 10 +++++++-
> libavfilter/defaults.c | 52 +++++++++++++++++++++++++++---------------
> libavfilter/formats.c | 22 ++++++++++++++++++
> 5 files changed, 88 insertions(+), 29 deletions(-)
[...]
> diff --git a/libavfilter/defaults.c b/libavfilter/defaults.c
> index c98dfa9..505a24f 100644
> --- a/libavfilter/defaults.c
> +++ b/libavfilter/defaults.c
> @@ -204,28 +204,38 @@ int avfilter_default_config_output_link(AVFilterLink
> *link)
> * FIXME: this will need changed for filters with a mix of pad types
> * (video + audio, etc)
> */
> +
> +#define SET_COMMON_ELEMS(type) do { \
> + int count = 0, i; \
> + \
> + for (i = 0; i < ctx->input_count; i++) { \
> + if (ctx->inputs[i]) { \
> + avfilter_formats_ref(formats, &ctx->inputs[i]->out_##type); \
> + count++; \
> + } \
> + } \
> + for (i = 0; i < ctx->output_count; i++) { \
> + if (ctx->outputs[i]) { \
> + avfilter_formats_ref(formats, &ctx->outputs[i]->in_##type); \
> + count++; \
> + } \
> + } \
> + \
> + if (!count) { \
> + av_free(formats->formats); \
> + av_free(formats->refs); \
> + av_free(formats); \
> + } \
> +} while(0)
> +
> void avfilter_set_common_formats(AVFilterContext *ctx, AVFilterFormats
> *formats)
> {
> - int count = 0, i;
> -
> - for (i = 0; i < ctx->input_count; i++) {
> - if (ctx->inputs[i]) {
> - avfilter_formats_ref(formats, &ctx->inputs[i]->out_formats);
> - count++;
> - }
> - }
> - for (i = 0; i < ctx->output_count; i++) {
> - if (ctx->outputs[i]) {
> - avfilter_formats_ref(formats, &ctx->outputs[i]->in_formats);
> - count++;
> - }
> - }
> + SET_COMMON_ELEMS(formats);
> +}
>
> - if (!count) {
> - av_free(formats->formats);
> - av_free(formats->refs);
> - av_free(formats);
> - }
> +void avfilter_set_common_chlayouts(AVFilterContext *ctx, AVFilterFormats
> *formats)
> +{
> + SET_COMMON_ELEMS(chlayouts);
> }
Is this required? Can't you have a single
avfilter_set_common_formats() for setting channel layouts as well?
Rest looks fine.
More information about the ffmpeg-devel
mailing list