On Wed, Feb 8, 2012 at 10:15 AM, Alex Converse <[email protected]> wrote:
>
> ---
>  libavcodec/aacdec.c |   57 ++++++++++++++------------------------------------
>  1 files changed, 16 insertions(+), 41 deletions(-)
>
> diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
> index 2e14e3c..1100a61 100644
> --- a/libavcodec/aacdec.c
> +++ b/libavcodec/aacdec.c
> @@ -409,56 +409,31 @@ static av_cold int output_configure(AACContext *ac,
>  {
>     AVCodecContext *avctx = ac->avctx;
>     int i, channels = 0, ret;
> +    uint64_t layout = 0;
>
>     if (ac->layout_map != layout_map) {
>         memcpy(ac->layout_map, layout_map, tags * sizeof(layout_map[0]));
>         ac->layout_map_tags = tags;
>     }
>
> -    if (channel_config) {
> -        if (avctx->request_channel_layout != AV_CH_LAYOUT_NATIVE)
> -            sniff_channel_order(layout_map, tags);
> -        for (i = 0; i < tags_per_config[channel_config]; i++) {
> -            int type    = layout_map[i][0];
> -            int id      = layout_map[i][1];
> -            int positon = layout_map[i][2];
> -            if ((ret = che_configure(ac, positon,
> -                                     type, id,
> -                                     &channels)))
> -                return ret;
> -        }
> -
> -        memset(ac->tag_che_map, 0, 4 * MAX_ELEM_ID * sizeof(ac->che[0][0]));
> -
> -        avctx->channel_layout = aac_channel_layout[channel_config - 1];
> -    } else {
> -        /* Allocate or free elements depending on if they are in the
> -         * current program configuration.
> -         *
> -         * Try to sniff a reasonable channel order, otherwise output the
> -         * channels in the order the PCE declared them.
> -         */
> -
> -        uint64_t layout = 0;
> -        if (avctx->request_channel_layout != AV_CH_LAYOUT_NATIVE)
> -            layout = sniff_channel_order(layout_map, tags);
> -        for (i = 0; i < tags; i++) {
> -            int type =     layout_map[i][0];
> -            int id =       layout_map[i][1];
> -            int position = layout_map[i][2];
> -            if ((ret = che_configure(ac, position,
> -                                     type, id,
> -                                     &channels)))
> -                return ret;
> -        }
> -
> -        memcpy(ac->tag_che_map, ac->che, 4 * MAX_ELEM_ID * 
> sizeof(ac->che[0][0]));
> -
> -        avctx->channel_layout = layout;
> +    // Try to sniff a reasonable channel order, otherwise output the
> +    // channels in the order the PCE declared them.
> +    if (avctx->request_channel_layout != AV_CH_LAYOUT_NATIVE)
> +        layout = sniff_channel_order(layout_map, tags);
> +    for (i = 0; i < tags; i++) {
> +        int type =     layout_map[i][0];
> +        int id =       layout_map[i][1];
> +        int position = layout_map[i][2];
> +        // Allocate or free elements depending on if they are in the
> +        // current program configuration.
> +        ret = che_configure(ac, position, type, id, &channels);
> +        if (ret < 0)
> +            return ret;
>     }
>
> +    memcpy(ac->tag_che_map, ac->che, 4 * MAX_ELEM_ID * 
> sizeof(ac->che[0][0]));
> +    avctx->channel_layout = layout;
>     avctx->channels = channels;
> -
>     ac->output_configured = oc_type;
>
>     return 0;
> --
> 1.7.7.3
>

To clarify, this one is completely new
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to