Hi Alex,

unfortunately, this patch does not apply cleanly to the 0.8 branch. In
order to have it for 0.8.2, I'd therefore require your assistance with
this backport.

On Fri, Mar 23, 2012 at 10:57 PM, Alex Converse <[email protected]> wrote:
> Module: libav
> Branch: master
> Commit: b00307ecd04f80d8021c50f9fa76fd452e54a3d1
>
> Author:    Alex Converse <[email protected]>
> Committer: Alex Converse <[email protected]>
> Date:      Wed Mar 21 12:20:58 2012 -0700
>
> aacsbr: Add a debug check to sbr_mapping.
>
> There have been multiple bugs caused by inconsistencies here.
>
> Based on an idea from Michael Niedermayer.
>
> CC: [email protected]
>
> ---
>
>  libavcodec/aacsbr.c |   24 +++++++++++++++++-------
>  1 files changed, 17 insertions(+), 7 deletions(-)
>
> diff --git a/libavcodec/aacsbr.c b/libavcodec/aacsbr.c
> index f39806e..c71cfa0 100644
> --- a/libavcodec/aacsbr.c
> +++ b/libavcodec/aacsbr.c
> @@ -1399,7 +1399,7 @@ static int sbr_x_gen(SpectralBandReplication *sbr, 
> float X[2][38][64],
>  /** High Frequency Adjustment (14496-3 sp04 p217) and Mapping
>  * (14496-3 sp04 p217)
>  */
> -static void sbr_mapping(AACContext *ac, SpectralBandReplication *sbr,
> +static int sbr_mapping(AACContext *ac, SpectralBandReplication *sbr,
>                         SBRData *ch_data, int e_a[2])
>  {
>     int e, i, m;
> @@ -1410,6 +1410,12 @@ static void sbr_mapping(AACContext *ac, 
> SpectralBandReplication *sbr,
>         uint16_t *table = ch_data->bs_freq_res[e + 1] ? sbr->f_tablehigh : 
> sbr->f_tablelow;
>         int k;
>
> +        if (sbr->kx[1] != table[0]) {
> +            av_log(ac->avctx, AV_LOG_ERROR, "kx != f_table{high,low}[0]. "
> +                   "Derived frequency tables were not regenerated.\n");
> +            sbr_turnoff(sbr);
> +            return AVERROR_BUG;
> +        }
>         for (i = 0; i < ilim; i++)
>             for (m = table[i]; m < table[i + 1]; m++)
>                 sbr->e_origmapped[e][m - sbr->kx[1]] = 
> ch_data->env_facs[e+1][i];
> @@ -1444,6 +1450,7 @@ static void sbr_mapping(AACContext *ac, 
> SpectralBandReplication *sbr,
>     }
>
>     memcpy(ch_data->s_indexmapped[0], 
> ch_data->s_indexmapped[ch_data->bs_num_env], 
> sizeof(ch_data->s_indexmapped[0]));
> +    return 0;
>  }
>
>  /// Estimation of current envelope (14496-3 sp04 p218)
> @@ -1644,6 +1651,7 @@ void ff_sbr_apply(AACContext *ac, 
> SpectralBandReplication *sbr, int id_aac,
>     int downsampled = ac->m4ac.ext_sample_rate < sbr->sample_rate;
>     int ch;
>     int nch = (id_aac == TYPE_CPE) ? 2 : 1;
> +    int err;
>
>     if (!sbr->kx_and_m_pushed) {
>         sbr->kx[0] = sbr->kx[1];
> @@ -1670,12 +1678,14 @@ void ff_sbr_apply(AACContext *ac, 
> SpectralBandReplication *sbr, int id_aac,
>                        sbr->data[ch].bs_num_env);
>
>             // hf_adj
> -            sbr_mapping(ac, sbr, &sbr->data[ch], sbr->data[ch].e_a);
> -            sbr_env_estimate(sbr->e_curr, sbr->X_high, sbr, &sbr->data[ch]);
> -            sbr_gain_calc(ac, sbr, &sbr->data[ch], sbr->data[ch].e_a);
> -            sbr_hf_assemble(sbr->data[ch].Y[sbr->data[ch].Ypos],
> -                            sbr->X_high, sbr, &sbr->data[ch],
> -                            sbr->data[ch].e_a);
> +            err = sbr_mapping(ac, sbr, &sbr->data[ch], sbr->data[ch].e_a);
> +            if (!err) {
> +                sbr_env_estimate(sbr->e_curr, sbr->X_high, sbr, 
> &sbr->data[ch]);
> +                sbr_gain_calc(ac, sbr, &sbr->data[ch], sbr->data[ch].e_a);
> +                sbr_hf_assemble(sbr->data[ch].Y[sbr->data[ch].Ypos],
> +                                sbr->X_high, sbr, &sbr->data[ch],
> +                                sbr->data[ch].e_a);
> +            }
>         }
>
>         /* synthesis */
>
> _______________________________________________
> libav-commits mailing list
> [email protected]
> https://lists.libav.org/mailman/listinfo/libav-commits



-- 
regards,
    Reinhard
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to