OLD | NEW |
1 /* libFLAC - Free Lossless Audio Codec library | 1 /* libFLAC - Free Lossless Audio Codec library |
2 * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007 Josh Coalson | 2 * Copyright (C) 2000-2009 Josh Coalson |
| 3 * Copyright (C) 2011-2014 Xiph.Org Foundation |
3 * | 4 * |
4 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
6 * are met: | 7 * are met: |
7 * | 8 * |
8 * - Redistributions of source code must retain the above copyright | 9 * - Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
10 * | 11 * |
11 * - Redistributions in binary form must reproduce the above copyright | 12 * - Redistributions in binary form must reproduce the above copyright |
12 * notice, this list of conditions and the following disclaimer in the | 13 * notice, this list of conditions and the following disclaimer in the |
(...skipping 16 matching lines...) Expand all Loading... |
29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
30 */ | 31 */ |
31 | 32 |
32 #ifndef FLAC__PRIVATE__FIXED_H | 33 #ifndef FLAC__PRIVATE__FIXED_H |
33 #define FLAC__PRIVATE__FIXED_H | 34 #define FLAC__PRIVATE__FIXED_H |
34 | 35 |
35 #ifdef HAVE_CONFIG_H | 36 #ifdef HAVE_CONFIG_H |
36 #include <config.h> | 37 #include <config.h> |
37 #endif | 38 #endif |
38 | 39 |
| 40 #include "private/cpu.h" |
39 #include "private/float.h" | 41 #include "private/float.h" |
40 #include "FLAC/format.h" | 42 #include "FLAC/format.h" |
41 | 43 |
42 /* | 44 /* |
43 * FLAC__fixed_compute_best_predictor() | 45 * FLAC__fixed_compute_best_predictor() |
44 * -------------------------------------------------------------------- | 46 * -------------------------------------------------------------------- |
45 * Compute the best fixed predictor and the expected bits-per-sample | 47 * Compute the best fixed predictor and the expected bits-per-sample |
46 * of the residual signal for each order. The _wide() version uses | 48 * of the residual signal for each order. The _wide() version uses |
47 * 64-bit integers which is statistically necessary when bits-per- | 49 * 64-bit integers which is statistically necessary when bits-per- |
48 * sample + log2(blocksize) > 30 | 50 * sample + log2(blocksize) > 30 |
49 * | 51 * |
50 * IN data[0,data_len-1] | 52 * IN data[0,data_len-1] |
51 * IN data_len | 53 * IN data_len |
52 * OUT residual_bits_per_sample[0,FLAC__MAX_FIXED_ORDER] | 54 * OUT residual_bits_per_sample[0,FLAC__MAX_FIXED_ORDER] |
53 */ | 55 */ |
54 #ifndef FLAC__INTEGER_ONLY_LIBRARY | 56 #ifndef FLAC__INTEGER_ONLY_LIBRARY |
55 unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned d
ata_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]); | 57 unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned d
ata_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]); |
| 58 unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsig
ned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]); |
56 # ifndef FLAC__NO_ASM | 59 # ifndef FLAC__NO_ASM |
57 # ifdef FLAC__CPU_IA32 | 60 # if (defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64) && defined FLAC__HAS_
X86INTRIN |
58 # ifdef FLAC__HAS_NASM | 61 # ifdef FLAC__SSE2_SUPPORTED |
59 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]); | 62 unsigned FLAC__fixed_compute_best_predictor_intrin_sse2(const FLAC__int32 data[]
, unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER
+ 1]); |
| 63 unsigned FLAC__fixed_compute_best_predictor_wide_intrin_sse2(const FLAC__int32 d
ata[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_O
RDER + 1]); |
| 64 # endif |
| 65 # ifdef FLAC__SSSE3_SUPPORTED |
| 66 unsigned FLAC__fixed_compute_best_predictor_intrin_ssse3(const FLAC__int32 data[
], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER
+1]); |
| 67 unsigned FLAC__fixed_compute_best_predictor_wide_intrin_ssse3(const FLAC__int32
data[], unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_
ORDER + 1]); |
60 # endif | 68 # endif |
61 # endif | 69 # endif |
| 70 # if defined FLAC__CPU_IA32 && defined FLAC__HAS_NASM |
| 71 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]); |
| 72 # endif |
62 # endif | 73 # endif |
63 unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsig
ned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]); | |
64 #else | 74 #else |
65 unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned d
ata_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]); | 75 unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 data[], unsigned d
ata_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]); |
66 unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsig
ned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]
); | 76 unsigned FLAC__fixed_compute_best_predictor_wide(const FLAC__int32 data[], unsig
ned data_len, FLAC__fixedpoint residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1]
); |
67 #endif | 77 #endif |
68 | 78 |
69 /* | 79 /* |
70 * FLAC__fixed_compute_residual() | 80 * FLAC__fixed_compute_residual() |
71 * -------------------------------------------------------------------- | 81 * -------------------------------------------------------------------- |
72 * Compute the residual signal obtained from sutracting the predicted | 82 * Compute the residual signal obtained from sutracting the predicted |
73 * signal from the original. | 83 * signal from the original. |
(...skipping 14 matching lines...) Expand all Loading... |
88 * IN residual[0,data_len-1] residual signal | 98 * IN residual[0,data_len-1] residual signal |
89 * IN data_len length of original signal | 99 * IN data_len length of original signal |
90 * IN order <= FLAC__MAX_FIXED_ORDER fixed-predictor order | 100 * IN order <= FLAC__MAX_FIXED_ORDER fixed-predictor order |
91 * *** IMPORTANT: the caller must pass in the historical samples: | 101 * *** IMPORTANT: the caller must pass in the historical samples: |
92 * IN data[-order,-1] previously-reconstructed historical sa
mples | 102 * IN data[-order,-1] previously-reconstructed historical sa
mples |
93 * OUT data[0,data_len-1] original signal | 103 * OUT data[0,data_len-1] original signal |
94 */ | 104 */ |
95 void FLAC__fixed_restore_signal(const FLAC__int32 residual[], unsigned data_len,
unsigned order, FLAC__int32 data[]); | 105 void FLAC__fixed_restore_signal(const FLAC__int32 residual[], unsigned data_len,
unsigned order, FLAC__int32 data[]); |
96 | 106 |
97 #endif | 107 #endif |
OLD | NEW |