[FFmpeg-devel] [PATCH] lavfi/buffersrc: set channel layout if it is known.

Stefano Sabatini stefasab at gmail.com
Tue Feb 19 00:12:54 CET 2013


Nit: drop ending point in subject line.

On date Sunday 2013-02-17 15:49:48 +0100, Nicolas George encoded:
> If buffersrc was configured for frames with an unknown layout,
> the incoming frames will have channel_layout = 0.

> If the format negociation has selected a known (and compatible)

negotiation

> channel layout for the link, the frame is assumed to have
> that layout, the field must be set before injecting the frame
> in the filters.
> 
> Signed-off-by: Nicolas George <nicolas.george at normalesup.org>
> ---
>  libavfilter/buffersrc.c |    4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c
> index 3fdf8d3..d150357 100644
> --- a/libavfilter/buffersrc.c
> +++ b/libavfilter/buffersrc.c
> @@ -121,6 +121,8 @@ int av_buffersrc_add_ref(AVFilterContext *s, AVFilterBufferRef *buf, int flags)
>              CHECK_VIDEO_PARAM_CHANGE(s, c, buf->video->w, buf->video->h, buf->format);
>              break;
>          case AVMEDIA_TYPE_AUDIO:
> +            if (!buf->audio->channel_layout)
> +                buf->audio->channel_layout = c->channel_layout;
>              CHECK_AUDIO_PARAM_CHANGE(s, c, buf->audio->sample_rate, buf->audio->channel_layout,
>                                       buf->format);
>              break;
> @@ -370,6 +372,8 @@ static int config_props(AVFilterLink *link)
>          link->sample_aspect_ratio = c->pixel_aspect;
>          break;
>      case AVMEDIA_TYPE_AUDIO:
> +        if (!c->channel_layout)
> +            c->channel_layout = link->channel_layout;
>          break;
>      default:
>          return AVERROR(EINVAL);

LGTM, thanks.
-- 
FFmpeg = Fancy & Fiendish Majestic Peaceless Elastic Governor


More information about the ffmpeg-devel mailing list