On 02/08/2012 01:15 PM, Alex Converse 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;
Patch looks ok.
-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel