fixed.h
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:4k
源码类别:

Windows CE

开发平台:

C/C++

  1. /* libFLAC - Free Lossless Audio Codec library
  2.  * Copyright (C) 2000,2001,2002,2003,2004,2005  Josh Coalson
  3.  *
  4.  * Redistribution and use in source and binary forms, with or without
  5.  * modification, are permitted provided that the following conditions
  6.  * are met:
  7.  *
  8.  * - Redistributions of source code must retain the above copyright
  9.  * notice, this list of conditions and the following disclaimer.
  10.  *
  11.  * - Redistributions in binary form must reproduce the above copyright
  12.  * notice, this list of conditions and the following disclaimer in the
  13.  * documentation and/or other materials provided with the distribution.
  14.  *
  15.  * - Neither the name of the Xiph.org Foundation nor the names of its
  16.  * contributors may be used to endorse or promote products derived from
  17.  * this software without specific prior written permission.
  18.  *
  19.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  20.  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  21.  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  22.  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
  23.  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  24.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  25.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  26.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  27.  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  28.  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  29.  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30.  */
  31. #ifndef FLAC__PRIVATE__FIXED_H
  32. #define FLAC__PRIVATE__FIXED_H
  33. #ifdef HAVE_CONFIG_H
  34. #include <config.h>
  35. #endif
  36. #include "private/float.h"
  37. #include "FLAC/format.h"
  38. /*
  39.  * FLAC__fixed_compute_best_predictor()
  40.  * --------------------------------------------------------------------
  41.  * Compute the best fixed predictor and the expected bits-per-sample
  42.  *  of the residual signal for each order.  The _wide() version uses
  43.  *  64-bit integers which is statistically necessary when bits-per-
  44.  *  sample + log2(blocksize) > 30
  45.  *
  46.  * IN data[0,data_len-1]
  47.  * IN data_len
  48.  * OUT residual_bits_per_sample[0,FLAC__MAX_FIXED_ORDER]
  49.  */
  50. #ifndef FLAC__INTEGER_ONLY_LIBRARY
  51. unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
  52. # ifndef FLAC__NO_ASM
  53. #  ifdef FLAC__CPU_IA32
  54. #   ifdef FLAC__HAS_NASM
  55. unsigned FLAC__fixed_compute_best_predictor_asm_ia32_mmx_cmov(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
  56. #   endif
  57. #  endif
  58. # endif
  59. unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
  60. #else
  61. unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
  62. unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsigned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]);
  63. #endif
  64. /*
  65.  * FLAC__fixed_compute_residual()
  66.  * --------------------------------------------------------------------
  67.  * Compute the residual signal obtained from sutracting the predicted
  68.  * signal from the original.
  69.  *
  70.  * IN data[-order,data_len-1]        original signal (NOTE THE INDICES!)
  71.  * IN data_len                       length of original signal
  72.  * IN order <= FLAC__MAX_FIXED_ORDER fixed-predictor order
  73.  * OUT residual[0,data_len-1]        residual signal
  74.  */
  75. void FLAC__fixed_compute_residual(const FLAC__int32 data[], unsigned data_len, unsigned order, FLAC__int32 residual[]);
  76. /*
  77.  * FLAC__fixed_restore_signal()
  78.  * --------------------------------------------------------------------
  79.  * Restore the original signal by summing the residual and the
  80.  * predictor.
  81.  *
  82.  * IN residual[0,data_len-1]         residual signal
  83.  * IN data_len                       length of original signal
  84.  * IN order <= FLAC__MAX_FIXED_ORDER fixed-predictor order
  85.  * *** IMPORTANT: the caller must pass in the historical samples:
  86.  * IN  data[-order,-1]               previously-reconstructed historical samples
  87.  * OUT data[0,data_len-1]            original signal
  88.  */
  89. void FLAC__fixed_restore_signal(const FLAC__int32 residual[], unsigned data_len, unsigned order, FLAC__int32 data[]);
  90. #endif