From 4a040f6b8ac3e17a64acfb465e59720ee331dc06 Mon Sep 17 00:00:00 2001 From: Josh Coalson Date: Wed, 4 Apr 2007 00:59:28 +0000 Subject: [PATCH] window the integer_signal instead of real_signal, remove unused real_signal from datapath --- src/libFLAC/include/private/lpc.h | 2 +- src/libFLAC/lpc.c | 2 +- src/libFLAC/stream_encoder.c | 78 ++++++--------------------------------- 3 files changed, 14 insertions(+), 68 deletions(-) diff --git a/src/libFLAC/include/private/lpc.h b/src/libFLAC/include/private/lpc.h index b55e59f..2cb139b 100644 --- a/src/libFLAC/include/private/lpc.h +++ b/src/libFLAC/include/private/lpc.h @@ -52,7 +52,7 @@ * OUT out[0,lag-1] * IN data_len */ -void FLAC__lpc_window_data(const FLAC__real in[], const FLAC__real window[], FLAC__real out[], unsigned data_len); +void FLAC__lpc_window_data(const FLAC__int32 in[], const FLAC__real window[], FLAC__real out[], unsigned data_len); /* * FLAC__lpc_compute_autocorrelation() diff --git a/src/libFLAC/lpc.c b/src/libFLAC/lpc.c index a24aa4d..37dcdf8 100644 --- a/src/libFLAC/lpc.c +++ b/src/libFLAC/lpc.c @@ -49,7 +49,7 @@ #define M_LN2 0.69314718055994530942 #endif -void FLAC__lpc_window_data(const FLAC__real in[], const FLAC__real window[], FLAC__real out[], unsigned data_len) +void FLAC__lpc_window_data(const FLAC__int32 in[], const FLAC__real window[], FLAC__real out[], unsigned data_len) { unsigned i; for(i = 0; i < data_len; i++) diff --git a/src/libFLAC/stream_encoder.c b/src/libFLAC/stream_encoder.c index 5b2c12a..09e9ca0 100644 --- a/src/libFLAC/stream_encoder.c +++ b/src/libFLAC/stream_encoder.c @@ -165,9 +165,6 @@ static FLAC__bool process_subframe_( const FLAC__FrameHeader *frame_header, unsigned subframe_bps, const FLAC__int32 integer_signal[], -#ifndef FLAC__INTEGER_ONLY_LIBRARY - const FLAC__real real_signal[], -#endif FLAC__Subframe *subframe[2], FLAC__EntropyCodingMethod_PartitionedRiceContents *partitioned_rice_contents[2], FLAC__int32 *residual[2], @@ -332,10 +329,10 @@ typedef struct FLAC__StreamEncoderPrivate { FLAC__int32 *integer_signal[FLAC__MAX_CHANNELS]; /* the integer version of the input signal */ FLAC__int32 *integer_signal_mid_side[2]; /* the integer version of the mid-side input signal (stereo only) */ #ifndef FLAC__INTEGER_ONLY_LIBRARY - FLAC__real *real_signal[FLAC__MAX_CHANNELS]; /* the floating-point version of the input signal */ - FLAC__real *real_signal_mid_side[2]; /* the floating-point version of the mid-side input signal (stereo only) */ + FLAC__real *real_signal[FLAC__MAX_CHANNELS]; /* (@@@ currently unused) the floating-point version of the input signal */ + FLAC__real *real_signal_mid_side[2]; /* (@@@ currently unused) the floating-point version of the mid-side input signal (stereo only) */ FLAC__real *window[FLAC__MAX_APODIZATION_FUNCTIONS]; /* the pre-computed floating-point window for each apodization function */ - FLAC__real *windowed_signal; /* the real_signal[] * current window[] */ + FLAC__real *windowed_signal; /* the integer_signal[] * current window[] */ #endif unsigned subframe_bps[FLAC__MAX_CHANNELS]; /* the effective bits per sample of the input signal (stream bps - wasted bits) */ unsigned subframe_bps_mid_side[2]; /* the effective bits per sample of the mid-side input signal (stream bps - wasted bits + 0/1) */ @@ -402,8 +399,8 @@ typedef struct FLAC__StreamEncoderPrivate { FLAC__int32 *integer_signal_unaligned[FLAC__MAX_CHANNELS]; FLAC__int32 *integer_signal_mid_side_unaligned[2]; #ifndef FLAC__INTEGER_ONLY_LIBRARY - FLAC__real *real_signal_unaligned[FLAC__MAX_CHANNELS]; - FLAC__real *real_signal_mid_side_unaligned[2]; + FLAC__real *real_signal_unaligned[FLAC__MAX_CHANNELS]; /* (@@@ currently unused) */ + FLAC__real *real_signal_mid_side_unaligned[2]; /* (@@@ currently unused) */ FLAC__real *window_unaligned[FLAC__MAX_APODIZATION_FUNCTIONS]; FLAC__real *windowed_signal_unaligned; #endif @@ -1980,23 +1977,13 @@ FLAC_API FLAC__bool FLAC__stream_encoder_process(FLAC__StreamEncoder *encoder, c for(i = encoder->private_->current_sample_number; i <= blocksize && j < samples; i++, j++) { x = mid = side = buffer[0][j]; encoder->private_->integer_signal[0][i] = x; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal[0][i] = (FLAC__real)x; -#endif x = buffer[1][j]; encoder->private_->integer_signal[1][i] = x; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal[1][i] = (FLAC__real)x; -#endif mid += x; side -= x; mid >>= 1; /* NOTE: not the same as 'mid = (buffer[0][j] + buffer[1][j]) / 2' ! */ encoder->private_->integer_signal_mid_side[1][i] = side; encoder->private_->integer_signal_mid_side[0][i] = mid; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal_mid_side[1][i] = (FLAC__real)side; - encoder->private_->real_signal_mid_side[0][i] = (FLAC__real)mid; -#endif encoder->private_->current_sample_number++; } /* we only process if we have a full block + 1 extra sample; final block is always handled by FLAC__stream_encoder_finish() */ @@ -2011,12 +1998,6 @@ FLAC_API FLAC__bool FLAC__stream_encoder_process(FLAC__StreamEncoder *encoder, c encoder->private_->integer_signal[1][0] = encoder->private_->integer_signal[1][i]; encoder->private_->integer_signal_mid_side[0][0] = encoder->private_->integer_signal_mid_side[0][i]; encoder->private_->integer_signal_mid_side[1][0] = encoder->private_->integer_signal_mid_side[1][i]; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal[0][0] = encoder->private_->real_signal[0][i]; - encoder->private_->real_signal[1][0] = encoder->private_->real_signal[1][i]; - encoder->private_->real_signal_mid_side[0][0] = encoder->private_->real_signal_mid_side[0][i]; - encoder->private_->real_signal_mid_side[1][0] = encoder->private_->real_signal_mid_side[1][i]; -#endif encoder->private_->current_sample_number = 1; } } while(j < samples); @@ -2035,9 +2016,6 @@ FLAC_API FLAC__bool FLAC__stream_encoder_process(FLAC__StreamEncoder *encoder, c for(channel = 0; channel < channels; channel++) { x = buffer[channel][j]; encoder->private_->integer_signal[channel][i] = x; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal[channel][i] = (FLAC__real)x; -#endif } encoder->private_->current_sample_number++; } @@ -2049,12 +2027,8 @@ FLAC_API FLAC__bool FLAC__stream_encoder_process(FLAC__StreamEncoder *encoder, c FLAC__ASSERT(i == blocksize+OVERREAD_); FLAC__ASSERT(OVERREAD_ == 1); /* assert we only overread 1 sample which simplifies the rest of the code below */ i--; - for(channel = 0; channel < channels; channel++) { + for(channel = 0; channel < channels; channel++) encoder->private_->integer_signal[channel][0] = encoder->private_->integer_signal[channel][i]; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal[channel][0] = encoder->private_->real_signal[channel][i]; -#endif - } encoder->private_->current_sample_number = 1; } } while(j < samples); @@ -2162,23 +2136,13 @@ FLAC_API FLAC__bool FLAC__stream_encoder_process_interleaved(FLAC__StreamEncoder for(i = encoder->private_->current_sample_number; i <= blocksize && j < samples; i++, j++) { x = mid = side = buffer[k++]; encoder->private_->integer_signal[0][i] = x; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal[0][i] = (FLAC__real)x; -#endif x = buffer[k++]; encoder->private_->integer_signal[1][i] = x; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal[1][i] = (FLAC__real)x; -#endif mid += x; side -= x; mid >>= 1; /* NOTE: not the same as 'mid = (left + right) / 2' ! */ encoder->private_->integer_signal_mid_side[1][i] = side; encoder->private_->integer_signal_mid_side[0][i] = mid; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal_mid_side[1][i] = (FLAC__real)side; - encoder->private_->real_signal_mid_side[0][i] = (FLAC__real)mid; -#endif encoder->private_->current_sample_number++; } /* we only process if we have a full block + 1 extra sample; final block is always handled by FLAC__stream_encoder_finish() */ @@ -2193,12 +2157,6 @@ FLAC_API FLAC__bool FLAC__stream_encoder_process_interleaved(FLAC__StreamEncoder encoder->private_->integer_signal[1][0] = encoder->private_->integer_signal[1][i]; encoder->private_->integer_signal_mid_side[0][0] = encoder->private_->integer_signal_mid_side[0][i]; encoder->private_->integer_signal_mid_side[1][0] = encoder->private_->integer_signal_mid_side[1][i]; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal[0][0] = encoder->private_->real_signal[0][i]; - encoder->private_->real_signal[1][0] = encoder->private_->real_signal[1][i]; - encoder->private_->real_signal_mid_side[0][0] = encoder->private_->real_signal_mid_side[0][i]; - encoder->private_->real_signal_mid_side[1][0] = encoder->private_->real_signal_mid_side[1][i]; -#endif encoder->private_->current_sample_number = 1; } } while(j < samples); @@ -2217,9 +2175,6 @@ FLAC_API FLAC__bool FLAC__stream_encoder_process_interleaved(FLAC__StreamEncoder for(channel = 0; channel < channels; channel++) { x = buffer[k++]; encoder->private_->integer_signal[channel][i] = x; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal[channel][i] = (FLAC__real)x; -#endif } encoder->private_->current_sample_number++; } @@ -2231,12 +2186,8 @@ FLAC_API FLAC__bool FLAC__stream_encoder_process_interleaved(FLAC__StreamEncoder FLAC__ASSERT(i == blocksize+OVERREAD_); FLAC__ASSERT(OVERREAD_ == 1); /* assert we only overread 1 sample which simplifies the rest of the code below */ i--; - for(channel = 0; channel < channels; channel++) { + for(channel = 0; channel < channels; channel++) encoder->private_->integer_signal[channel][0] = encoder->private_->integer_signal[channel][i]; -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal[channel][0] = encoder->private_->real_signal[channel][i]; -#endif - } encoder->private_->current_sample_number = 1; } } while(j < samples); @@ -2480,18 +2431,22 @@ FLAC__bool resize_buffers_(FLAC__StreamEncoder *encoder, unsigned new_blocksize) memset(encoder->private_->integer_signal[i], 0, sizeof(FLAC__int32)*4); encoder->private_->integer_signal[i] += 4; #ifndef FLAC__INTEGER_ONLY_LIBRARY +#if 0 /* @@@ currently unused */ if(encoder->protected_->max_lpc_order > 0) ok = ok && FLAC__memory_alloc_aligned_real_array(new_blocksize+OVERREAD_, &encoder->private_->real_signal_unaligned[i], &encoder->private_->real_signal[i]); #endif +#endif } for(i = 0; ok && i < 2; i++) { ok = ok && FLAC__memory_alloc_aligned_int32_array(new_blocksize+4+OVERREAD_, &encoder->private_->integer_signal_mid_side_unaligned[i], &encoder->private_->integer_signal_mid_side[i]); memset(encoder->private_->integer_signal_mid_side[i], 0, sizeof(FLAC__int32)*4); encoder->private_->integer_signal_mid_side[i] += 4; #ifndef FLAC__INTEGER_ONLY_LIBRARY +#if 0 /* @@@ currently unused */ if(encoder->protected_->max_lpc_order > 0) ok = ok && FLAC__memory_alloc_aligned_real_array(new_blocksize+OVERREAD_, &encoder->private_->real_signal_mid_side_unaligned[i], &encoder->private_->real_signal_mid_side[i]); #endif +#endif } #ifndef FLAC__INTEGER_ONLY_LIBRARY if(ok && encoder->protected_->max_lpc_order > 0) { @@ -3212,9 +3167,6 @@ FLAC__bool process_subframes_(FLAC__StreamEncoder *encoder, FLAC__bool is_fracti &frame_header, encoder->private_->subframe_bps[channel], encoder->private_->integer_signal[channel], -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal[channel], -#endif encoder->private_->subframe_workspace_ptr[channel], encoder->private_->partitioned_rice_contents_workspace_ptr[channel], encoder->private_->residual_workspace[channel], @@ -3241,9 +3193,6 @@ FLAC__bool process_subframes_(FLAC__StreamEncoder *encoder, FLAC__bool is_fracti &frame_header, encoder->private_->subframe_bps_mid_side[channel], encoder->private_->integer_signal_mid_side[channel], -#ifndef FLAC__INTEGER_ONLY_LIBRARY - encoder->private_->real_signal_mid_side[channel], -#endif encoder->private_->subframe_workspace_ptr_mid_side[channel], encoder->private_->partitioned_rice_contents_workspace_ptr_mid_side[channel], encoder->private_->residual_workspace_mid_side[channel], @@ -3382,9 +3331,6 @@ FLAC__bool process_subframe_( const FLAC__FrameHeader *frame_header, unsigned subframe_bps, const FLAC__int32 integer_signal[], -#ifndef FLAC__INTEGER_ONLY_LIBRARY - const FLAC__real real_signal[], -#endif FLAC__Subframe *subframe[2], FLAC__EntropyCodingMethod_PartitionedRiceContents *partitioned_rice_contents[2], FLAC__int32 *residual[2], @@ -3511,7 +3457,7 @@ FLAC__bool process_subframe_( if(max_lpc_order > 0) { unsigned a; for (a = 0; a < encoder->protected_->num_apodizations; a++) { - FLAC__lpc_window_data(real_signal, encoder->private_->window[a], encoder->private_->windowed_signal, frame_header->blocksize); + FLAC__lpc_window_data(integer_signal, encoder->private_->window[a], encoder->private_->windowed_signal, frame_header->blocksize); encoder->private_->local_lpc_compute_autocorrelation(encoder->private_->windowed_signal, frame_header->blocksize, max_lpc_order+1, autoc); /* if autoc[0] == 0.0, the signal is constant and we usually won't get here, but it can happen */ if(autoc[0] != 0.0) { -- 2.7.4