1
1
/* libFLAC - Free Lossless Audio Codec library
2
* Copyright (C) 2000,2001,2002,2003,2004,2005 Josh Coalson
2
* Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007 Josh Coalson
4
4
* Redistribution and use in source and binary forms, with or without
5
5
* modification, are permitted provided that the following conditions
354
for(i = 0; i < idata_len; i++) {
355
residual[i] = data[i];
359
FLAC__ASSERT(sizeof(residual[0]) == sizeof(data[0]));
360
memcpy(residual, data, sizeof(residual[0])*data_len);
359
for(i = 0; i < idata_len; i++) {
363
for(i = 0; i < idata_len; i++)
360
364
residual[i] = data[i] - data[i-1];
364
for(i = 0; i < idata_len; i++) {
365
/* == data[i] - 2*data[i-1] + data[i-2] */
367
for(i = 0; i < idata_len; i++)
368
#if 1 /* OPT: may be faster with some compilers on some systems */
366
369
residual[i] = data[i] - (data[i-1] << 1) + data[i-2];
371
residual[i] = data[i] - 2*data[i-1] + data[i-2];
370
for(i = 0; i < idata_len; i++) {
371
/* == data[i] - 3*data[i-1] + 3*data[i-2] - data[i-3] */
375
for(i = 0; i < idata_len; i++)
376
#if 1 /* OPT: may be faster with some compilers on some systems */
372
377
residual[i] = data[i] - (((data[i-1]-data[i-2])<<1) + (data[i-1]-data[i-2])) - data[i-3];
379
residual[i] = data[i] - 3*data[i-1] + 3*data[i-2] - data[i-3];
376
for(i = 0; i < idata_len; i++) {
377
/* == data[i] - 4*data[i-1] + 6*data[i-2] - 4*data[i-3] + data[i-4] */
383
for(i = 0; i < idata_len; i++)
384
#if 1 /* OPT: may be faster with some compilers on some systems */
378
385
residual[i] = data[i] - ((data[i-1]+data[i-3])<<2) + ((data[i-2]<<2) + (data[i-2]<<1)) + data[i-4];
387
residual[i] = data[i] - 4*data[i-1] + 6*data[i-2] - 4*data[i-3] + data[i-4];
392
for(i = 0; i < idata_len; i++) {
393
data[i] = residual[i];
401
FLAC__ASSERT(sizeof(residual[0]) == sizeof(data[0]));
402
memcpy(data, residual, sizeof(residual[0])*data_len);
397
for(i = 0; i < idata_len; i++) {
405
for(i = 0; i < idata_len; i++)
398
406
data[i] = residual[i] + data[i-1];
402
for(i = 0; i < idata_len; i++) {
403
/* == residual[i] + 2*data[i-1] - data[i-2] */
409
for(i = 0; i < idata_len; i++)
410
#if 1 /* OPT: may be faster with some compilers on some systems */
404
411
data[i] = residual[i] + (data[i-1]<<1) - data[i-2];
413
data[i] = residual[i] + 2*data[i-1] - data[i-2];
408
for(i = 0; i < idata_len; i++) {
409
/* residual[i] + 3*data[i-1] - 3*data[i-2]) + data[i-3] */
417
for(i = 0; i < idata_len; i++)
418
#if 1 /* OPT: may be faster with some compilers on some systems */
410
419
data[i] = residual[i] + (((data[i-1]-data[i-2])<<1) + (data[i-1]-data[i-2])) + data[i-3];
421
data[i] = residual[i] + 3*data[i-1] - 3*data[i-2] + data[i-3];
414
for(i = 0; i < idata_len; i++) {
415
/* == residual[i] + 4*data[i-1] - 6*data[i-2] + 4*data[i-3] - data[i-4] */
425
for(i = 0; i < idata_len; i++)
426
#if 1 /* OPT: may be faster with some compilers on some systems */
416
427
data[i] = residual[i] + ((data[i-1]+data[i-3])<<2) - ((data[i-2]<<2) + (data[i-2]<<1)) - data[i-4];
429
data[i] = residual[i] + 4*data[i-1] - 6*data[i-2] + 4*data[i-3] - data[i-4];