mirror of
https://github.com/claunia/flac.git
synced 2025-12-16 18:54:26 +00:00
fix bug with negative indexing
This commit is contained in:
@@ -303,7 +303,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
}
|
}
|
||||||
#else /* fully unrolled version for normal use */
|
#else /* fully unrolled version for normal use */
|
||||||
{
|
{
|
||||||
unsigned i;
|
int i;
|
||||||
FLAC__int32 sum;
|
FLAC__int32 sum;
|
||||||
|
|
||||||
FLAC__ASSERT(order > 0);
|
FLAC__ASSERT(order > 0);
|
||||||
@@ -318,7 +318,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
if(order > 8) {
|
if(order > 8) {
|
||||||
if(order > 10) {
|
if(order > 10) {
|
||||||
if(order == 12) {
|
if(order == 12) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[11] * data[i-12];
|
sum += qlp_coeff[11] * data[i-12];
|
||||||
sum += qlp_coeff[10] * data[i-11];
|
sum += qlp_coeff[10] * data[i-11];
|
||||||
@@ -336,7 +336,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 11 */
|
else { /* order == 11 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[10] * data[i-11];
|
sum += qlp_coeff[10] * data[i-11];
|
||||||
sum += qlp_coeff[9] * data[i-10];
|
sum += qlp_coeff[9] * data[i-10];
|
||||||
@@ -355,7 +355,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(order == 10) {
|
if(order == 10) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[9] * data[i-10];
|
sum += qlp_coeff[9] * data[i-10];
|
||||||
sum += qlp_coeff[8] * data[i-9];
|
sum += qlp_coeff[8] * data[i-9];
|
||||||
@@ -371,7 +371,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 9 */
|
else { /* order == 9 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[8] * data[i-9];
|
sum += qlp_coeff[8] * data[i-9];
|
||||||
sum += qlp_coeff[7] * data[i-8];
|
sum += qlp_coeff[7] * data[i-8];
|
||||||
@@ -390,7 +390,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
else if(order > 4) {
|
else if(order > 4) {
|
||||||
if(order > 6) {
|
if(order > 6) {
|
||||||
if(order == 8) {
|
if(order == 8) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[7] * data[i-8];
|
sum += qlp_coeff[7] * data[i-8];
|
||||||
sum += qlp_coeff[6] * data[i-7];
|
sum += qlp_coeff[6] * data[i-7];
|
||||||
@@ -404,7 +404,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 7 */
|
else { /* order == 7 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[6] * data[i-7];
|
sum += qlp_coeff[6] * data[i-7];
|
||||||
sum += qlp_coeff[5] * data[i-6];
|
sum += qlp_coeff[5] * data[i-6];
|
||||||
@@ -419,7 +419,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(order == 6) {
|
if(order == 6) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[5] * data[i-6];
|
sum += qlp_coeff[5] * data[i-6];
|
||||||
sum += qlp_coeff[4] * data[i-5];
|
sum += qlp_coeff[4] * data[i-5];
|
||||||
@@ -431,7 +431,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 5 */
|
else { /* order == 5 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[4] * data[i-5];
|
sum += qlp_coeff[4] * data[i-5];
|
||||||
sum += qlp_coeff[3] * data[i-4];
|
sum += qlp_coeff[3] * data[i-4];
|
||||||
@@ -446,7 +446,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
else {
|
else {
|
||||||
if(order > 2) {
|
if(order > 2) {
|
||||||
if(order == 4) {
|
if(order == 4) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[3] * data[i-4];
|
sum += qlp_coeff[3] * data[i-4];
|
||||||
sum += qlp_coeff[2] * data[i-3];
|
sum += qlp_coeff[2] * data[i-3];
|
||||||
@@ -456,7 +456,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 3 */
|
else { /* order == 3 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[2] * data[i-3];
|
sum += qlp_coeff[2] * data[i-3];
|
||||||
sum += qlp_coeff[1] * data[i-2];
|
sum += qlp_coeff[1] * data[i-2];
|
||||||
@@ -467,7 +467,7 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(order == 2) {
|
if(order == 2) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[1] * data[i-2];
|
sum += qlp_coeff[1] * data[i-2];
|
||||||
sum += qlp_coeff[0] * data[i-1];
|
sum += qlp_coeff[0] * data[i-1];
|
||||||
@@ -475,14 +475,14 @@ void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, u
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 1 */
|
else { /* order == 1 */
|
||||||
for(i = 0; i < data_len; i++)
|
for(i = 0; i < (int)data_len; i++)
|
||||||
residual[i] = data[i] - ((qlp_coeff[0] * data[i-1]) >> lp_quantization);
|
residual[i] = data[i] - ((qlp_coeff[0] * data[i-1]) >> lp_quantization);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order > 12 */
|
else { /* order > 12 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
switch(order) {
|
switch(order) {
|
||||||
case 32: sum += qlp_coeff[31] * data[i-32];
|
case 32: sum += qlp_coeff[31] * data[i-32];
|
||||||
@@ -833,7 +833,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
}
|
}
|
||||||
#else /* fully unrolled version for normal use */
|
#else /* fully unrolled version for normal use */
|
||||||
{
|
{
|
||||||
unsigned i;
|
int i;
|
||||||
FLAC__int32 sum;
|
FLAC__int32 sum;
|
||||||
|
|
||||||
FLAC__ASSERT(order > 0);
|
FLAC__ASSERT(order > 0);
|
||||||
@@ -848,7 +848,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
if(order > 8) {
|
if(order > 8) {
|
||||||
if(order > 10) {
|
if(order > 10) {
|
||||||
if(order == 12) {
|
if(order == 12) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[11] * data[i-12];
|
sum += qlp_coeff[11] * data[i-12];
|
||||||
sum += qlp_coeff[10] * data[i-11];
|
sum += qlp_coeff[10] * data[i-11];
|
||||||
@@ -866,7 +866,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 11 */
|
else { /* order == 11 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[10] * data[i-11];
|
sum += qlp_coeff[10] * data[i-11];
|
||||||
sum += qlp_coeff[9] * data[i-10];
|
sum += qlp_coeff[9] * data[i-10];
|
||||||
@@ -885,7 +885,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(order == 10) {
|
if(order == 10) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[9] * data[i-10];
|
sum += qlp_coeff[9] * data[i-10];
|
||||||
sum += qlp_coeff[8] * data[i-9];
|
sum += qlp_coeff[8] * data[i-9];
|
||||||
@@ -901,7 +901,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 9 */
|
else { /* order == 9 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[8] * data[i-9];
|
sum += qlp_coeff[8] * data[i-9];
|
||||||
sum += qlp_coeff[7] * data[i-8];
|
sum += qlp_coeff[7] * data[i-8];
|
||||||
@@ -920,7 +920,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
else if(order > 4) {
|
else if(order > 4) {
|
||||||
if(order > 6) {
|
if(order > 6) {
|
||||||
if(order == 8) {
|
if(order == 8) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[7] * data[i-8];
|
sum += qlp_coeff[7] * data[i-8];
|
||||||
sum += qlp_coeff[6] * data[i-7];
|
sum += qlp_coeff[6] * data[i-7];
|
||||||
@@ -934,7 +934,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 7 */
|
else { /* order == 7 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[6] * data[i-7];
|
sum += qlp_coeff[6] * data[i-7];
|
||||||
sum += qlp_coeff[5] * data[i-6];
|
sum += qlp_coeff[5] * data[i-6];
|
||||||
@@ -949,7 +949,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(order == 6) {
|
if(order == 6) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[5] * data[i-6];
|
sum += qlp_coeff[5] * data[i-6];
|
||||||
sum += qlp_coeff[4] * data[i-5];
|
sum += qlp_coeff[4] * data[i-5];
|
||||||
@@ -961,7 +961,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 5 */
|
else { /* order == 5 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[4] * data[i-5];
|
sum += qlp_coeff[4] * data[i-5];
|
||||||
sum += qlp_coeff[3] * data[i-4];
|
sum += qlp_coeff[3] * data[i-4];
|
||||||
@@ -976,7 +976,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
else {
|
else {
|
||||||
if(order > 2) {
|
if(order > 2) {
|
||||||
if(order == 4) {
|
if(order == 4) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[3] * data[i-4];
|
sum += qlp_coeff[3] * data[i-4];
|
||||||
sum += qlp_coeff[2] * data[i-3];
|
sum += qlp_coeff[2] * data[i-3];
|
||||||
@@ -986,7 +986,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 3 */
|
else { /* order == 3 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[2] * data[i-3];
|
sum += qlp_coeff[2] * data[i-3];
|
||||||
sum += qlp_coeff[1] * data[i-2];
|
sum += qlp_coeff[1] * data[i-2];
|
||||||
@@ -997,7 +997,7 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(order == 2) {
|
if(order == 2) {
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
sum += qlp_coeff[1] * data[i-2];
|
sum += qlp_coeff[1] * data[i-2];
|
||||||
sum += qlp_coeff[0] * data[i-1];
|
sum += qlp_coeff[0] * data[i-1];
|
||||||
@@ -1005,14 +1005,14 @@ void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order == 1 */
|
else { /* order == 1 */
|
||||||
for(i = 0; i < data_len; i++)
|
for(i = 0; i < (int)data_len; i++)
|
||||||
data[i] = residual[i] + ((qlp_coeff[0] * data[i-1]) >> lp_quantization);
|
data[i] = residual[i] + ((qlp_coeff[0] * data[i-1]) >> lp_quantization);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* order > 12 */
|
else { /* order > 12 */
|
||||||
for(i = 0; i < data_len; i++) {
|
for(i = 0; i < (int)data_len; i++) {
|
||||||
sum = 0;
|
sum = 0;
|
||||||
switch(order) {
|
switch(order) {
|
||||||
case 32: sum += qlp_coeff[31] * data[i-32];
|
case 32: sum += qlp_coeff[31] * data[i-32];
|
||||||
|
|||||||
Reference in New Issue
Block a user