[FFmpeg-devel] [PATCHv2 2/2] avcodec/sinewin_tablegen: use sin instead of sinf for fixed point to improve precision
Ganesh Ajjanagadde
gajjanag at gmail.com
Mon Mar 14 00:19:13 CET 2016
On Sun, Mar 13, 2016 at 6:50 PM, Marton Balint <cus at passwd.hu> wrote:
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
> libavcodec/sinewin_tablegen.h | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/libavcodec/sinewin_tablegen.h b/libavcodec/sinewin_tablegen.h
> index 4432135..9c912aa 100644
> --- a/libavcodec/sinewin_tablegen.h
> +++ b/libavcodec/sinewin_tablegen.h
> @@ -50,9 +50,9 @@ SINETABLE(8192);
> #endif
>
> #if USE_FIXED
> -#define SIN_FIX(a) (int)floor((a) * 0x80000000 + 0.5)
> +#define SIN_FIX(a) (int)floor(sin(a) * 0x80000000 + 0.5)
Note that lrint may be preferred, it is faster and better rounded.
Hosts/hardcoded tables can use lavu/tablegen.h, which fall back to
floor based hacks.
> #else
> -#define SIN_FIX(a) a
> +#define SIN_FIX(a) sinf(a)
> #endif
Also, why is it essential that SIN_FIX is redefined, can't you just
change sinf to sin on line 69?
>
> SINETABLE_CONST INTFLOAT * const AAC_RENAME(ff_sine_windows)[] = {
> @@ -66,7 +66,7 @@ SINETABLE_CONST INTFLOAT * const AAC_RENAME(ff_sine_windows)[] = {
> av_cold void AAC_RENAME(ff_sine_window_init)(INTFLOAT *window, int n) {
> int i;
> for(i = 0; i < n; i++)
> - window[i] = SIN_FIX(sinf((i + 0.5) * (M_PI / (2.0 * n))));
> + window[i] = SIN_FIX((i + 0.5) * (M_PI / (2.0 * n)));
> }
Could you please add a link in the commit message describing more
verbosely why you need this (e.g which platform)?
>
> av_cold void AAC_RENAME(ff_init_ff_sine_windows)(int index) {
> --
> 2.6.2
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
More information about the ffmpeg-devel
mailing list