From b885fa4b96ba226049c78d924950e7e1275f62f4 Mon Sep 17 00:00:00 2001 From: xufuji456 <839789740@qq.com> Date: Tue, 17 Aug 2021 09:16:20 +0800 Subject: [PATCH] update window --- app/src/main/cpp/visualizer/execute_fft.c | 3 ++- app/src/main/cpp/visualizer/window.c | 26 +++++++---------------- app/src/main/cpp/visualizer/window.h | 2 +- 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/app/src/main/cpp/visualizer/execute_fft.c b/app/src/main/cpp/visualizer/execute_fft.c index bf7f1ab..ab0fe77 100644 --- a/app/src/main/cpp/visualizer/execute_fft.c +++ b/app/src/main/cpp/visualizer/execute_fft.c @@ -55,7 +55,7 @@ static inline block_t *block_Duplicate(const block_t *p_block) p_sys->wind_param = *w_param;//TODO /* Fetch the FFT window parameters */ - window_get_param(/*VLC_OBJECT( p_filter )*/NULL, &p_sys->wind_param);//TODO + window_get_param(&p_sys->wind_param); /* Create the FIFO for the audio data. */ vlc_queue_Init(&p_sys->queue, offsetof (block_t, p_next)); @@ -219,6 +219,7 @@ static void *Thread(void *p_data) // vlc_tick_wait(block->i_pts + (block->i_length / 2)); // vlc_gl_Swap(gl); usleep(block->i_pts + (block->i_length / 2)); + LOGE("height[0]=%f, height[1]=%f, height=[2]=%f", height[0], height[1], height[2]); release: window_close(&wind_ctx); diff --git a/app/src/main/cpp/visualizer/window.c b/app/src/main/cpp/visualizer/window.c index bc0bee7..c436df7 100644 --- a/app/src/main/cpp/visualizer/window.c +++ b/app/src/main/cpp/visualizer/window.c @@ -44,10 +44,6 @@ static const char * const window_list[NB_WINDOWS] = { "none", "hann", "flattop", "blackmanharris", "kaiser", }; -static const char * const window_list_text[NB_WINDOWS] = { -// N_("None"), N_("Hann"), N_("Flat Top"), N_("Blackman-Harris"), N_("Kaiser"), - "None", "Hann", "Flat Top", "Blackman-Harris", "Kaiser", -}; /* * The modified Bessel function I0(x). See Chapter 6 of the "Numerical Recipes @@ -62,17 +58,17 @@ static float bessi0(float x) { y = x / 3.75; y *= y; - ans = 1.0 + y * ( 3.5156229 + y * ( 3.0899424 + y * ( 1.2067492 + ans = (float) (1.0 + y * ( 3.5156229 + y * ( 3.0899424 + y * ( 1.2067492 + y * ( 0.2659732 + y * ( 0.360768e-1 - + y * 0.45813e-2 ) ) ) ) ); + + y * 0.45813e-2 ) ) ) ) ) ); } else { y = 3.75 / ax; - ans = ( exp( ax ) / sqrt( ax ) ) * ( 0.39894228 + y * ( 0.1328592e-1 + ans = (float) ( ( exp( ax ) / sqrt( ax ) ) * ( 0.39894228 + y * ( 0.1328592e-1 + y * ( 0.225319e-2 + y * ( -0.157565e-2 + y * ( 0.916281e-2 + y * ( -0.2057706e-1 + y * ( 0.2635537e-1 + y * ( -0.1647633e-1 - + y * 0.392377e-2 ) ) ) ) ) ) ) ); + + y * 0.392377e-2 ) ) ) ) ) ) ) ) ); } return ans; } @@ -80,13 +76,13 @@ static float bessi0(float x) /* * Obtain the window type from the window type variable. */ -void window_get_param(void * p_aout, window_param * p_param) +void window_get_param(window_param * p_param) { /* Fetch Kaiser parameter */ - p_param->f_kaiser_alpha = 1; //TODO var_InheritFloat( p_aout, "effect-kaiser-param" ); + p_param->f_kaiser_alpha = 1.0f; /* Fetch window type */ - char * psz_preset = "hann"; //TODO var_InheritString( p_aout, "effect-fft-window" ); + char * psz_preset = "hann"; if( !psz_preset ) { goto no_preset; @@ -96,16 +92,12 @@ void window_get_param(void * p_aout, window_param * p_param) { if( !strcasecmp( psz_preset, window_list[i] ) ) { -// free( psz_preset );//TODO - p_param->wind_type = i; + p_param->wind_type = (window_type) i; return; } } -// free( psz_preset );//TODO no_preset: -// msg_Warn( p_aout, "No matching window preset found; using rectangular " -// "window (i.e. no window)" ); p_param->wind_type = NONE; } @@ -132,7 +124,6 @@ bool window_init(int i_buffer_size, window_param * p_param, window_context * p_c goto exit; } -// pf_table = vlc_alloc( i_buffer_size, sizeof( *pf_table ) ); pf_table = (float * )malloc( i_buffer_size * sizeof(*pf_table)); if( !pf_table ) { @@ -191,7 +182,6 @@ bool window_init(int i_buffer_size, window_param * p_param, window_context * p_c } default: /* We should not reach here */ -// vlc_assert_unreachable(); break; } diff --git a/app/src/main/cpp/visualizer/window.h b/app/src/main/cpp/visualizer/window.h index 085d0a5..26b941c 100644 --- a/app/src/main/cpp/visualizer/window.h +++ b/app/src/main/cpp/visualizer/window.h @@ -58,7 +58,7 @@ struct _struct_window_param { /* Prototypes for the window function */ typedef struct _struct_window_context window_context; typedef struct _struct_window_param window_param; -void window_get_param(void * p_aout, window_param * p_param); +void window_get_param(window_param * p_param); bool window_init(int i_buffer_size, window_param * p_param, window_context * p_ctx); void window_scale_in_place(int16_t * p_buffer, window_context * p_ctx); void window_close(window_context * p_ctx);