123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- $OpenBSD: patch-libavcodec_aacenc_quantization_misc_h,v 1.2 2016/03/09 17:29:36 ajacoutot Exp $
- AAC encoder: memoize quantize_band_cost
- aacenc: use generational cache instead of resetting.
- --- libavcodec/aacenc_quantization_misc.h.orig Tue Mar 8 19:20:55 2016
- +++ libavcodec/aacenc_quantization_misc.h Tue Mar 8 19:23:47 2016
- @@ -0,0 +1,53 @@
- +/*
- + * AAC encoder quantization
- + * Copyright (C) 2015 Claudio Freire
- + *
- + * This file is part of FFmpeg.
- + *
- + * FFmpeg is free software; you can redistribute it and/or
- + * modify it under the terms of the GNU Lesser General Public
- + * License as published by the Free Software Foundation; either
- + * version 2.1 of the License, or (at your option) any later version.
- + *
- + * FFmpeg is distributed in the hope that it will be useful,
- + * but WITHOUT ANY WARRANTY; without even the implied warranty of
- + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- + * Lesser General Public License for more details.
- + *
- + * You should have received a copy of the GNU Lesser General Public
- + * License along with FFmpeg; if not, write to the Free Software
- + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- + */
- +
- +/**
- + * @file
- + * AAC encoder quantization misc reusable function templates
- + * @author Claudio Freire ( klaussfreire gmail com )
- + */
- +
- +#ifndef AVCODEC_AACENC_QUANTIZATION_MISC_H
- +#define AVCODEC_AACENC_QUANTIZATION_MISC_H
- +
- +static inline float quantize_band_cost_cached(struct AACEncContext *s, int w, int g, const float *in,
- + const float *scaled, int size, int scale_idx,
- + int cb, const float lambda, const float uplim,
- + int *bits, float *energy, int rtz)
- +{
- + AACQuantizeBandCostCacheEntry *entry;
- + av_assert1(scale_idx >= 0 && scale_idx < 256);
- + entry = &s->quantize_band_cost_cache[scale_idx][w*16+g];
- + if (entry->generation != s->quantize_band_cost_cache_generation || entry->cb != cb || entry->rtz != rtz) {
- + entry->rd = quantize_band_cost(s, in, scaled, size, scale_idx,
- + cb, lambda, uplim, &entry->bits, &entry->energy, rtz);
- + entry->cb = cb;
- + entry->rtz = rtz;
- + entry->generation = s->quantize_band_cost_cache_generation;
- + }
- + if (bits)
- + *bits = entry->bits;
- + if (energy)
- + *energy = entry->energy;
- + return entry->rd;
- +}
- +
- +#endif /* AVCODEC_AACENC_QUANTIZATION_MISC_H */
|