[FFmpeg-devel] [PATCH 03/10] dcadsp: scan coefficients linearly instead.
Michael Niedermayer
michaelni at gmx.at
Sat Feb 15 20:23:18 CET 2014
On Fri, Feb 14, 2014 at 04:00:47PM +0000, Christophe Gisquet wrote:
> This change is inspired by x86 asm, where this frees a register.
> ---
> libavcodec/dcadsp.c | 13 ++++++-------
> 1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/libavcodec/dcadsp.c b/libavcodec/dcadsp.c
> index 8515fcb..c239e14 100644
> --- a/libavcodec/dcadsp.c
> +++ b/libavcodec/dcadsp.c
> @@ -36,22 +36,21 @@ static inline void
> dca_lfe_fir(float *out, const float *in, const float *coefs,
> int decifactor)
> {
> - float *out2 = out + decifactor;
> + float *out2 = out + 2*decifactor-1;
> const float *cf0 = coefs;
> - const float *cf1 = coefs + 256;
> + int num_coeffs = 256 / decifactor;
> int j, k;
>
> /* One decimated sample generates 2*decifactor interpolated ones */
> for (k = 0; k < decifactor; k++) {
> float v0 = 0.0;
> float v1 = 0.0;
> - for (j = 0; j < 256 / decifactor; j++) {
> - float s = in[-j];
> - v0 += s * *cf0++;
> - v1 += s * *--cf1;
> + for (j = 0; j < num_coeffs; j++, cf0++) {
> + v0 += in[-j] * *cf0;
> + v1 += in[1+j-num_coeffs] * *cf0;
> }
> *out++ = v0;
> - *out2++ = v1;
> + *out2-- = v1;
> }
applied
PS: decifactor should probably be replaced by a decishift to avoid
divisions
thanks
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
No human being will ever know the Truth, for even if they happen to say it
by chance, they would not even known they had done so. -- Xenophanes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140215/73b0109b/attachment.asc>
More information about the ffmpeg-devel
mailing list