The "GR-PEACH_Audio_Playback_Sample" is a sample code that can provides high-resolution audio playback of FLAC format files. It also allows the user to audio-playback control functions such as play, pause, and stop by manipulating key switches.
Dependencies: R_BSP TLV320_RBSP USBHost_custom
Note
For a sample program of with LCD Board,
please refer to GR-PEACH_Audio_Playback_7InchLCD_Sample.
Introduction
The "GR-PEACH_Audio_Playback_Sample" is a sample code that can provides high-resolution audio playback of FLAC format files. It also allows the user to audio-playback control functions such as play, pause, and stop by manipulating key switches.
1. Overview of the Sample Code
1.1 Software Block Diagram
Figure 1.1 shows the software block diagram.
1.2 Pin Definitions
Table 1.1 shows the pins that this sample code are to use.
2. Sample Code Operating Environment
This sample code runs in GR-PEACH + the Audio/Camera shield for the GR-PEACH environment. This section explains the functions of the ports that are used by this sample code.
2.1 Operating Environment
Figure 2.1 shows the configuration of the operating environment for running this sample code.
2.2 List of User Operations
A list of user operations on the command line, TFT touch keys, and switch key that the user can perform for this sample code is shown in. Table 2.1.
3. Function Outline
The functions of this sample code are summarized in Table 3.1 to Table 3.3.
3.1 Playback Control
The playback control that the sample code supports include play, pause, stop, skip to next, and skip to previous.
3.2 Trick Play Control
Manipulating "Repeat" alternates between "Repeat mode On" and "Repeat mode Off". The default mode is "Repeat mode On". When the repeat mode is on, the playback of the first song starts after the playback of the last song is finished. When the repeat mode is off, the sample code enters the stopped state after the playback of the last song is finished.
3.3 Acquisition of the Song Information
The information of the song being played is obtained by operating the "Play info" during the playback of the song. Table 3.4 lists the items of information that can be obtained by the "Play info" operation.
3.4 How the Folder Structure is Analyzed
The sample coded analyzes the folder structure in the breadth-first search order. The order in which files are numbered is illustrated in Table 3.5. The sample code does not sort the files by file or folder name.
4.Others
The default setting of serial communication (baud rate etc.) in mbed is shown the following link.
Please refer to the link and change the settings of your PC terminal software.
The default value of baud rate in mbed is 9600, and this application uses baud rate 9600.
https://developer.mbed.org/teams/Renesas/wiki/GR-PEACH-Getting-Started#install-the-usb-serial-communication
flac/src/libFLAC/include/private/lpc.h@0:ee40da884cfc, 2015-10-16 (annotated)
- Committer:
- dkato
- Date:
- Fri Oct 16 04:28:07 2015 +0000
- Revision:
- 0:ee40da884cfc
first commit
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| dkato | 0:ee40da884cfc | 1 | /* libFLAC - Free Lossless Audio Codec library |
| dkato | 0:ee40da884cfc | 2 | * Copyright (C) 2000-2009 Josh Coalson |
| dkato | 0:ee40da884cfc | 3 | * Copyright (C) 2011-2014 Xiph.Org Foundation |
| dkato | 0:ee40da884cfc | 4 | * |
| dkato | 0:ee40da884cfc | 5 | * Redistribution and use in source and binary forms, with or without |
| dkato | 0:ee40da884cfc | 6 | * modification, are permitted provided that the following conditions |
| dkato | 0:ee40da884cfc | 7 | * are met: |
| dkato | 0:ee40da884cfc | 8 | * |
| dkato | 0:ee40da884cfc | 9 | * - Redistributions of source code must retain the above copyright |
| dkato | 0:ee40da884cfc | 10 | * notice, this list of conditions and the following disclaimer. |
| dkato | 0:ee40da884cfc | 11 | * |
| dkato | 0:ee40da884cfc | 12 | * - Redistributions in binary form must reproduce the above copyright |
| dkato | 0:ee40da884cfc | 13 | * notice, this list of conditions and the following disclaimer in the |
| dkato | 0:ee40da884cfc | 14 | * documentation and/or other materials provided with the distribution. |
| dkato | 0:ee40da884cfc | 15 | * |
| dkato | 0:ee40da884cfc | 16 | * - Neither the name of the Xiph.org Foundation nor the names of its |
| dkato | 0:ee40da884cfc | 17 | * contributors may be used to endorse or promote products derived from |
| dkato | 0:ee40da884cfc | 18 | * this software without specific prior written permission. |
| dkato | 0:ee40da884cfc | 19 | * |
| dkato | 0:ee40da884cfc | 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| dkato | 0:ee40da884cfc | 21 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| dkato | 0:ee40da884cfc | 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| dkato | 0:ee40da884cfc | 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR |
| dkato | 0:ee40da884cfc | 24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| dkato | 0:ee40da884cfc | 25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| dkato | 0:ee40da884cfc | 26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| dkato | 0:ee40da884cfc | 27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
| dkato | 0:ee40da884cfc | 28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
| dkato | 0:ee40da884cfc | 29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| dkato | 0:ee40da884cfc | 30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| dkato | 0:ee40da884cfc | 31 | */ |
| dkato | 0:ee40da884cfc | 32 | |
| dkato | 0:ee40da884cfc | 33 | #ifndef FLAC__PRIVATE__LPC_H |
| dkato | 0:ee40da884cfc | 34 | #define FLAC__PRIVATE__LPC_H |
| dkato | 0:ee40da884cfc | 35 | |
| dkato | 0:ee40da884cfc | 36 | #ifdef HAVE_CONFIG_H |
| dkato | 0:ee40da884cfc | 37 | #include <config.h> |
| dkato | 0:ee40da884cfc | 38 | #endif |
| dkato | 0:ee40da884cfc | 39 | |
| dkato | 0:ee40da884cfc | 40 | #include "private/cpu.h" |
| dkato | 0:ee40da884cfc | 41 | #include "private/float.h" |
| dkato | 0:ee40da884cfc | 42 | #include "FLAC/format.h" |
| dkato | 0:ee40da884cfc | 43 | |
| dkato | 0:ee40da884cfc | 44 | #ifndef FLAC__INTEGER_ONLY_LIBRARY |
| dkato | 0:ee40da884cfc | 45 | |
| dkato | 0:ee40da884cfc | 46 | /* |
| dkato | 0:ee40da884cfc | 47 | * FLAC__lpc_window_data() |
| dkato | 0:ee40da884cfc | 48 | * -------------------------------------------------------------------- |
| dkato | 0:ee40da884cfc | 49 | * Applies the given window to the data. |
| dkato | 0:ee40da884cfc | 50 | * OPT: asm implementation |
| dkato | 0:ee40da884cfc | 51 | * |
| dkato | 0:ee40da884cfc | 52 | * IN in[0,data_len-1] |
| dkato | 0:ee40da884cfc | 53 | * IN window[0,data_len-1] |
| dkato | 0:ee40da884cfc | 54 | * OUT out[0,lag-1] |
| dkato | 0:ee40da884cfc | 55 | * IN data_len |
| dkato | 0:ee40da884cfc | 56 | */ |
| dkato | 0:ee40da884cfc | 57 | void FLAC__lpc_window_data(const FLAC__int32 in[], const FLAC__real window[], FLAC__real out[], unsigned data_len); |
| dkato | 0:ee40da884cfc | 58 | |
| dkato | 0:ee40da884cfc | 59 | /* |
| dkato | 0:ee40da884cfc | 60 | * FLAC__lpc_compute_autocorrelation() |
| dkato | 0:ee40da884cfc | 61 | * -------------------------------------------------------------------- |
| dkato | 0:ee40da884cfc | 62 | * Compute the autocorrelation for lags between 0 and lag-1. |
| dkato | 0:ee40da884cfc | 63 | * Assumes data[] outside of [0,data_len-1] == 0. |
| dkato | 0:ee40da884cfc | 64 | * Asserts that lag > 0. |
| dkato | 0:ee40da884cfc | 65 | * |
| dkato | 0:ee40da884cfc | 66 | * IN data[0,data_len-1] |
| dkato | 0:ee40da884cfc | 67 | * IN data_len |
| dkato | 0:ee40da884cfc | 68 | * IN 0 < lag <= data_len |
| dkato | 0:ee40da884cfc | 69 | * OUT autoc[0,lag-1] |
| dkato | 0:ee40da884cfc | 70 | */ |
| dkato | 0:ee40da884cfc | 71 | void FLAC__lpc_compute_autocorrelation(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]); |
| dkato | 0:ee40da884cfc | 72 | #ifndef FLAC__NO_ASM |
| dkato | 0:ee40da884cfc | 73 | # ifdef FLAC__CPU_IA32 |
| dkato | 0:ee40da884cfc | 74 | # ifdef FLAC__HAS_NASM |
| dkato | 0:ee40da884cfc | 75 | void FLAC__lpc_compute_autocorrelation_asm_ia32(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]); |
| dkato | 0:ee40da884cfc | 76 | void FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_4(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]); |
| dkato | 0:ee40da884cfc | 77 | void FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_8(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]); |
| dkato | 0:ee40da884cfc | 78 | void FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_12(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]); |
| dkato | 0:ee40da884cfc | 79 | void FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_16(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]); |
| dkato | 0:ee40da884cfc | 80 | # endif |
| dkato | 0:ee40da884cfc | 81 | # endif |
| dkato | 0:ee40da884cfc | 82 | # if (defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64) && defined FLAC__HAS_X86INTRIN |
| dkato | 0:ee40da884cfc | 83 | # ifdef FLAC__SSE_SUPPORTED |
| dkato | 0:ee40da884cfc | 84 | void FLAC__lpc_compute_autocorrelation_intrin_sse_lag_4(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]); |
| dkato | 0:ee40da884cfc | 85 | void FLAC__lpc_compute_autocorrelation_intrin_sse_lag_8(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]); |
| dkato | 0:ee40da884cfc | 86 | void FLAC__lpc_compute_autocorrelation_intrin_sse_lag_12(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]); |
| dkato | 0:ee40da884cfc | 87 | void FLAC__lpc_compute_autocorrelation_intrin_sse_lag_16(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[]); |
| dkato | 0:ee40da884cfc | 88 | # endif |
| dkato | 0:ee40da884cfc | 89 | # endif |
| dkato | 0:ee40da884cfc | 90 | #endif |
| dkato | 0:ee40da884cfc | 91 | |
| dkato | 0:ee40da884cfc | 92 | /* |
| dkato | 0:ee40da884cfc | 93 | * FLAC__lpc_compute_lp_coefficients() |
| dkato | 0:ee40da884cfc | 94 | * -------------------------------------------------------------------- |
| dkato | 0:ee40da884cfc | 95 | * Computes LP coefficients for orders 1..max_order. |
| dkato | 0:ee40da884cfc | 96 | * Do not call if autoc[0] == 0.0. This means the signal is zero |
| dkato | 0:ee40da884cfc | 97 | * and there is no point in calculating a predictor. |
| dkato | 0:ee40da884cfc | 98 | * |
| dkato | 0:ee40da884cfc | 99 | * IN autoc[0,max_order] autocorrelation values |
| dkato | 0:ee40da884cfc | 100 | * IN 0 < max_order <= FLAC__MAX_LPC_ORDER max LP order to compute |
| dkato | 0:ee40da884cfc | 101 | * OUT lp_coeff[0,max_order-1][0,max_order-1] LP coefficients for each order |
| dkato | 0:ee40da884cfc | 102 | * *** IMPORTANT: |
| dkato | 0:ee40da884cfc | 103 | * *** lp_coeff[0,max_order-1][max_order,FLAC__MAX_LPC_ORDER-1] are untouched |
| dkato | 0:ee40da884cfc | 104 | * OUT error[0,max_order-1] error for each order (more |
| dkato | 0:ee40da884cfc | 105 | * specifically, the variance of |
| dkato | 0:ee40da884cfc | 106 | * the error signal times # of |
| dkato | 0:ee40da884cfc | 107 | * samples in the signal) |
| dkato | 0:ee40da884cfc | 108 | * |
| dkato | 0:ee40da884cfc | 109 | * Example: if max_order is 9, the LP coefficients for order 9 will be |
| dkato | 0:ee40da884cfc | 110 | * in lp_coeff[8][0,8], the LP coefficients for order 8 will be |
| dkato | 0:ee40da884cfc | 111 | * in lp_coeff[7][0,7], etc. |
| dkato | 0:ee40da884cfc | 112 | */ |
| dkato | 0:ee40da884cfc | 113 | void FLAC__lpc_compute_lp_coefficients(const FLAC__real autoc[], unsigned *max_order, FLAC__real lp_coeff[][FLAC__MAX_LPC_ORDER], FLAC__double error[]); |
| dkato | 0:ee40da884cfc | 114 | |
| dkato | 0:ee40da884cfc | 115 | /* |
| dkato | 0:ee40da884cfc | 116 | * FLAC__lpc_quantize_coefficients() |
| dkato | 0:ee40da884cfc | 117 | * -------------------------------------------------------------------- |
| dkato | 0:ee40da884cfc | 118 | * Quantizes the LP coefficients. NOTE: precision + bits_per_sample |
| dkato | 0:ee40da884cfc | 119 | * must be less than 32 (sizeof(FLAC__int32)*8). |
| dkato | 0:ee40da884cfc | 120 | * |
| dkato | 0:ee40da884cfc | 121 | * IN lp_coeff[0,order-1] LP coefficients |
| dkato | 0:ee40da884cfc | 122 | * IN order LP order |
| dkato | 0:ee40da884cfc | 123 | * IN FLAC__MIN_QLP_COEFF_PRECISION < precision |
| dkato | 0:ee40da884cfc | 124 | * desired precision (in bits, including sign |
| dkato | 0:ee40da884cfc | 125 | * bit) of largest coefficient |
| dkato | 0:ee40da884cfc | 126 | * OUT qlp_coeff[0,order-1] quantized coefficients |
| dkato | 0:ee40da884cfc | 127 | * OUT shift # of bits to shift right to get approximated |
| dkato | 0:ee40da884cfc | 128 | * LP coefficients. NOTE: could be negative. |
| dkato | 0:ee40da884cfc | 129 | * RETURN 0 => quantization OK |
| dkato | 0:ee40da884cfc | 130 | * 1 => coefficients require too much shifting for *shift to |
| dkato | 0:ee40da884cfc | 131 | * fit in the LPC subframe header. 'shift' is unset. |
| dkato | 0:ee40da884cfc | 132 | * 2 => coefficients are all zero, which is bad. 'shift' is |
| dkato | 0:ee40da884cfc | 133 | * unset. |
| dkato | 0:ee40da884cfc | 134 | */ |
| dkato | 0:ee40da884cfc | 135 | int FLAC__lpc_quantize_coefficients(const FLAC__real lp_coeff[], unsigned order, unsigned precision, FLAC__int32 qlp_coeff[], int *shift); |
| dkato | 0:ee40da884cfc | 136 | |
| dkato | 0:ee40da884cfc | 137 | /* |
| dkato | 0:ee40da884cfc | 138 | * FLAC__lpc_compute_residual_from_qlp_coefficients() |
| dkato | 0:ee40da884cfc | 139 | * -------------------------------------------------------------------- |
| dkato | 0:ee40da884cfc | 140 | * Compute the residual signal obtained from sutracting the predicted |
| dkato | 0:ee40da884cfc | 141 | * signal from the original. |
| dkato | 0:ee40da884cfc | 142 | * |
| dkato | 0:ee40da884cfc | 143 | * IN data[-order,data_len-1] original signal (NOTE THE INDICES!) |
| dkato | 0:ee40da884cfc | 144 | * IN data_len length of original signal |
| dkato | 0:ee40da884cfc | 145 | * IN qlp_coeff[0,order-1] quantized LP coefficients |
| dkato | 0:ee40da884cfc | 146 | * IN order > 0 LP order |
| dkato | 0:ee40da884cfc | 147 | * IN lp_quantization quantization of LP coefficients in bits |
| dkato | 0:ee40da884cfc | 148 | * OUT residual[0,data_len-1] residual signal |
| dkato | 0:ee40da884cfc | 149 | */ |
| dkato | 0:ee40da884cfc | 150 | void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 151 | void FLAC__lpc_compute_residual_from_qlp_coefficients_wide(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 152 | #ifndef FLAC__NO_ASM |
| dkato | 0:ee40da884cfc | 153 | # ifdef FLAC__CPU_IA32 |
| dkato | 0:ee40da884cfc | 154 | # ifdef FLAC__HAS_NASM |
| dkato | 0:ee40da884cfc | 155 | void FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 156 | void FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32_mmx(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 157 | void FLAC__lpc_compute_residual_from_qlp_coefficients_wide_asm_ia32(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 158 | # endif |
| dkato | 0:ee40da884cfc | 159 | # endif |
| dkato | 0:ee40da884cfc | 160 | # if (defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64) && defined FLAC__HAS_X86INTRIN |
| dkato | 0:ee40da884cfc | 161 | # ifdef FLAC__SSE2_SUPPORTED |
| dkato | 0:ee40da884cfc | 162 | void FLAC__lpc_compute_residual_from_qlp_coefficients_16_intrin_sse2(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 163 | void FLAC__lpc_compute_residual_from_qlp_coefficients_intrin_sse2(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 164 | # endif |
| dkato | 0:ee40da884cfc | 165 | # ifdef FLAC__SSE4_1_SUPPORTED |
| dkato | 0:ee40da884cfc | 166 | void FLAC__lpc_compute_residual_from_qlp_coefficients_intrin_sse41(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 167 | void FLAC__lpc_compute_residual_from_qlp_coefficients_wide_intrin_sse41(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 168 | # endif |
| dkato | 0:ee40da884cfc | 169 | # ifdef FLAC__AVX2_SUPPORTED |
| dkato | 0:ee40da884cfc | 170 | void FLAC__lpc_compute_residual_from_qlp_coefficients_16_intrin_avx2(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 171 | void FLAC__lpc_compute_residual_from_qlp_coefficients_intrin_avx2(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 172 | void FLAC__lpc_compute_residual_from_qlp_coefficients_wide_intrin_avx2(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[]); |
| dkato | 0:ee40da884cfc | 173 | # endif |
| dkato | 0:ee40da884cfc | 174 | # endif |
| dkato | 0:ee40da884cfc | 175 | #endif |
| dkato | 0:ee40da884cfc | 176 | |
| dkato | 0:ee40da884cfc | 177 | #endif /* !defined FLAC__INTEGER_ONLY_LIBRARY */ |
| dkato | 0:ee40da884cfc | 178 | |
| dkato | 0:ee40da884cfc | 179 | /* |
| dkato | 0:ee40da884cfc | 180 | * FLAC__lpc_restore_signal() |
| dkato | 0:ee40da884cfc | 181 | * -------------------------------------------------------------------- |
| dkato | 0:ee40da884cfc | 182 | * Restore the original signal by summing the residual and the |
| dkato | 0:ee40da884cfc | 183 | * predictor. |
| dkato | 0:ee40da884cfc | 184 | * |
| dkato | 0:ee40da884cfc | 185 | * IN residual[0,data_len-1] residual signal |
| dkato | 0:ee40da884cfc | 186 | * IN data_len length of original signal |
| dkato | 0:ee40da884cfc | 187 | * IN qlp_coeff[0,order-1] quantized LP coefficients |
| dkato | 0:ee40da884cfc | 188 | * IN order > 0 LP order |
| dkato | 0:ee40da884cfc | 189 | * IN lp_quantization quantization of LP coefficients in bits |
| dkato | 0:ee40da884cfc | 190 | * *** IMPORTANT: the caller must pass in the historical samples: |
| dkato | 0:ee40da884cfc | 191 | * IN data[-order,-1] previously-reconstructed historical samples |
| dkato | 0:ee40da884cfc | 192 | * OUT data[0,data_len-1] original signal |
| dkato | 0:ee40da884cfc | 193 | */ |
| dkato | 0:ee40da884cfc | 194 | void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[]); |
| dkato | 0:ee40da884cfc | 195 | void FLAC__lpc_restore_signal_wide(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[]); |
| dkato | 0:ee40da884cfc | 196 | #ifndef FLAC__NO_ASM |
| dkato | 0:ee40da884cfc | 197 | # ifdef FLAC__CPU_IA32 |
| dkato | 0:ee40da884cfc | 198 | # ifdef FLAC__HAS_NASM |
| dkato | 0:ee40da884cfc | 199 | void FLAC__lpc_restore_signal_asm_ia32(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[]); |
| dkato | 0:ee40da884cfc | 200 | void FLAC__lpc_restore_signal_asm_ia32_mmx(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[]); |
| dkato | 0:ee40da884cfc | 201 | void FLAC__lpc_restore_signal_wide_asm_ia32(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[]); |
| dkato | 0:ee40da884cfc | 202 | # endif /* FLAC__HAS_NASM */ |
| dkato | 0:ee40da884cfc | 203 | # endif /* FLAC__CPU_IA32 */ |
| dkato | 0:ee40da884cfc | 204 | # if (defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64) && defined FLAC__HAS_X86INTRIN |
| dkato | 0:ee40da884cfc | 205 | # ifdef FLAC__SSE2_SUPPORTED |
| dkato | 0:ee40da884cfc | 206 | void FLAC__lpc_restore_signal_16_intrin_sse2(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[]); |
| dkato | 0:ee40da884cfc | 207 | # endif |
| dkato | 0:ee40da884cfc | 208 | # ifdef FLAC__SSE4_1_SUPPORTED |
| dkato | 0:ee40da884cfc | 209 | void FLAC__lpc_restore_signal_wide_intrin_sse41(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[]); |
| dkato | 0:ee40da884cfc | 210 | # endif |
| dkato | 0:ee40da884cfc | 211 | # endif |
| dkato | 0:ee40da884cfc | 212 | #endif /* FLAC__NO_ASM */ |
| dkato | 0:ee40da884cfc | 213 | |
| dkato | 0:ee40da884cfc | 214 | #ifndef FLAC__INTEGER_ONLY_LIBRARY |
| dkato | 0:ee40da884cfc | 215 | |
| dkato | 0:ee40da884cfc | 216 | /* |
| dkato | 0:ee40da884cfc | 217 | * FLAC__lpc_compute_expected_bits_per_residual_sample() |
| dkato | 0:ee40da884cfc | 218 | * -------------------------------------------------------------------- |
| dkato | 0:ee40da884cfc | 219 | * Compute the expected number of bits per residual signal sample |
| dkato | 0:ee40da884cfc | 220 | * based on the LP error (which is related to the residual variance). |
| dkato | 0:ee40da884cfc | 221 | * |
| dkato | 0:ee40da884cfc | 222 | * IN lpc_error >= 0.0 error returned from calculating LP coefficients |
| dkato | 0:ee40da884cfc | 223 | * IN total_samples > 0 # of samples in residual signal |
| dkato | 0:ee40da884cfc | 224 | * RETURN expected bits per sample |
| dkato | 0:ee40da884cfc | 225 | */ |
| dkato | 0:ee40da884cfc | 226 | FLAC__double FLAC__lpc_compute_expected_bits_per_residual_sample(FLAC__double lpc_error, unsigned total_samples); |
| dkato | 0:ee40da884cfc | 227 | FLAC__double FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(FLAC__double lpc_error, FLAC__double error_scale); |
| dkato | 0:ee40da884cfc | 228 | |
| dkato | 0:ee40da884cfc | 229 | /* |
| dkato | 0:ee40da884cfc | 230 | * FLAC__lpc_compute_best_order() |
| dkato | 0:ee40da884cfc | 231 | * -------------------------------------------------------------------- |
| dkato | 0:ee40da884cfc | 232 | * Compute the best order from the array of signal errors returned |
| dkato | 0:ee40da884cfc | 233 | * during coefficient computation. |
| dkato | 0:ee40da884cfc | 234 | * |
| dkato | 0:ee40da884cfc | 235 | * IN lpc_error[0,max_order-1] >= 0.0 error returned from calculating LP coefficients |
| dkato | 0:ee40da884cfc | 236 | * IN max_order > 0 max LP order |
| dkato | 0:ee40da884cfc | 237 | * IN total_samples > 0 # of samples in residual signal |
| dkato | 0:ee40da884cfc | 238 | * IN overhead_bits_per_order # of bits overhead for each increased LP order |
| dkato | 0:ee40da884cfc | 239 | * (includes warmup sample size and quantized LP coefficient) |
| dkato | 0:ee40da884cfc | 240 | * RETURN [1,max_order] best order |
| dkato | 0:ee40da884cfc | 241 | */ |
| dkato | 0:ee40da884cfc | 242 | unsigned FLAC__lpc_compute_best_order(const FLAC__double lpc_error[], unsigned max_order, unsigned total_samples, unsigned overhead_bits_per_order); |
| dkato | 0:ee40da884cfc | 243 | |
| dkato | 0:ee40da884cfc | 244 | #endif /* !defined FLAC__INTEGER_ONLY_LIBRARY */ |
| dkato | 0:ee40da884cfc | 245 | |
| dkato | 0:ee40da884cfc | 246 | #endif |