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) 2012-2014 Xiph.org Foundation |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * - Redistributions of source code must retain the above copyright | 8 * - Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * | 10 * |
11 * - Redistributions in binary form must reproduce the above copyright | 11 * - Redistributions in binary form must reproduce the above copyright |
12 * notice, this list of conditions and the following disclaimer in the | 12 * notice, this list of conditions and the following disclaimer in the |
13 * documentation and/or other materials provided with the distribution. | 13 * documentation and/or other materials provided with the distribution. |
14 * | 14 * |
15 * - Neither the name of the Xiph.org Foundation nor the names of its | 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 | 16 * contributors may be used to endorse or promote products derived from |
17 * this software without specific prior written permission. | 17 * this software without specific prior written permission. |
18 * | 18 * |
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR | 22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR |
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | 26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | 27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 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. | 29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
30 */ | 30 */ |
31 | 31 |
32 #ifndef FLAC__PROTECTED__STREAM_DECODER_H | 32 #ifndef FLAC__PRIVATE__MACROS_H |
33 #define FLAC__PROTECTED__STREAM_DECODER_H | 33 #define FLAC__PRIVATE__MACROS_H |
34 | 34 |
35 #include "FLAC/stream_decoder.h" | 35 #if defined(__GNUC__) |
36 #if FLAC__HAS_OGG | 36 |
37 #include "private/ogg_decoder_aspect.h" | 37 #define flac_max(a,b) \ |
| 38 ({ __typeof__ (a) _a = (a); \ |
| 39 __typeof__ (b) _b = (b); \ |
| 40 _a > _b ? _a : _b; }) |
| 41 |
| 42 #define MIN_PASTE(A,B) A##B |
| 43 #define MIN_IMPL(A,B,L) ({ \ |
| 44 __typeof__(A) MIN_PASTE(__a,L) = (A); \ |
| 45 __typeof__(B) MIN_PASTE(__b,L) = (B); \ |
| 46 MIN_PASTE(__a,L) < MIN_PASTE(__b,L) ? MIN_PASTE(__a,L) : MIN_PASTE(__b,L); \ |
| 47 }) |
| 48 |
| 49 #define flac_min(A,B) MIN_IMPL(A,B,__COUNTER__) |
| 50 |
| 51 /* Whatever other unix that has sys/param.h */ |
| 52 #elif defined(HAVE_SYS_PARAM_H) |
| 53 #include <sys/param.h> |
| 54 #define flac_max(a,b) MAX(a,b) |
| 55 #define flac_min(a,b) MIN(a,b) |
| 56 |
| 57 /* Windows VS has them in stdlib.h.. XXX:Untested */ |
| 58 #elif defined(_MSC_VER) |
| 59 #include <stdlib.h> |
| 60 #define flac_max(a,b) __max(a,b) |
| 61 #define flac_min(a,b) __min(a,b) |
38 #endif | 62 #endif |
39 | 63 |
40 typedef struct FLAC__StreamDecoderProtected { | 64 #ifndef MIN |
41 » FLAC__StreamDecoderState state; | 65 #define MIN(x,y)» ((x) <= (y) ? (x) : (y)) |
42 » unsigned channels; | |
43 » FLAC__ChannelAssignment channel_assignment; | |
44 » unsigned bits_per_sample; | |
45 » unsigned sample_rate; /* in Hz */ | |
46 » unsigned blocksize; /* in samples (per channel) */ | |
47 » FLAC__bool md5_checking; /* if true, generate MD5 signature of decoded d
ata and compare against signature in the STREAMINFO metadata block */ | |
48 #if FLAC__HAS_OGG | |
49 » FLAC__OggDecoderAspect ogg_decoder_aspect; | |
50 #endif | 66 #endif |
51 } FLAC__StreamDecoderProtected; | |
52 | 67 |
53 /* | 68 #ifndef MAX |
54 * return the number of input bytes consumed | 69 #define MAX(x,y)» ((x) >= (y) ? (x) : (y)) |
55 */ | 70 #endif |
56 unsigned FLAC__stream_decoder_get_input_bytes_unconsumed(const FLAC__StreamDecod
er *decoder); | |
57 | 71 |
58 #endif | 72 #endif |
OLD | NEW |