Mercurial > hg > sv-dependency-builds
comparison src/libmad-0.15.1b/decoder.h @ 0:c7265573341e
Import initial set of sources
author | Chris Cannam |
---|---|
date | Mon, 18 Mar 2013 14:12:14 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c7265573341e |
---|---|
1 /* | |
2 * libmad - MPEG audio decoder library | |
3 * Copyright (C) 2000-2004 Underbit Technologies, Inc. | |
4 * | |
5 * This program is free software; you can redistribute it and/or modify | |
6 * it under the terms of the GNU General Public License as published by | |
7 * the Free Software Foundation; either version 2 of the License, or | |
8 * (at your option) any later version. | |
9 * | |
10 * This program is distributed in the hope that it will be useful, | |
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 * GNU General Public License for more details. | |
14 * | |
15 * You should have received a copy of the GNU General Public License | |
16 * along with this program; if not, write to the Free Software | |
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 * | |
19 * $Id: decoder.h,v 1.17 2004/01/23 09:41:32 rob Exp $ | |
20 */ | |
21 | |
22 # ifndef LIBMAD_DECODER_H | |
23 # define LIBMAD_DECODER_H | |
24 | |
25 # include "stream.h" | |
26 # include "frame.h" | |
27 # include "synth.h" | |
28 | |
29 enum mad_decoder_mode { | |
30 MAD_DECODER_MODE_SYNC = 0, | |
31 MAD_DECODER_MODE_ASYNC | |
32 }; | |
33 | |
34 enum mad_flow { | |
35 MAD_FLOW_CONTINUE = 0x0000, /* continue normally */ | |
36 MAD_FLOW_STOP = 0x0010, /* stop decoding normally */ | |
37 MAD_FLOW_BREAK = 0x0011, /* stop decoding and signal an error */ | |
38 MAD_FLOW_IGNORE = 0x0020 /* ignore the current frame */ | |
39 }; | |
40 | |
41 struct mad_decoder { | |
42 enum mad_decoder_mode mode; | |
43 | |
44 int options; | |
45 | |
46 struct { | |
47 long pid; | |
48 int in; | |
49 int out; | |
50 } async; | |
51 | |
52 struct { | |
53 struct mad_stream stream; | |
54 struct mad_frame frame; | |
55 struct mad_synth synth; | |
56 } *sync; | |
57 | |
58 void *cb_data; | |
59 | |
60 enum mad_flow (*input_func)(void *, struct mad_stream *); | |
61 enum mad_flow (*header_func)(void *, struct mad_header const *); | |
62 enum mad_flow (*filter_func)(void *, | |
63 struct mad_stream const *, struct mad_frame *); | |
64 enum mad_flow (*output_func)(void *, | |
65 struct mad_header const *, struct mad_pcm *); | |
66 enum mad_flow (*error_func)(void *, struct mad_stream *, struct mad_frame *); | |
67 enum mad_flow (*message_func)(void *, void *, unsigned int *); | |
68 }; | |
69 | |
70 void mad_decoder_init(struct mad_decoder *, void *, | |
71 enum mad_flow (*)(void *, struct mad_stream *), | |
72 enum mad_flow (*)(void *, struct mad_header const *), | |
73 enum mad_flow (*)(void *, | |
74 struct mad_stream const *, | |
75 struct mad_frame *), | |
76 enum mad_flow (*)(void *, | |
77 struct mad_header const *, | |
78 struct mad_pcm *), | |
79 enum mad_flow (*)(void *, | |
80 struct mad_stream *, | |
81 struct mad_frame *), | |
82 enum mad_flow (*)(void *, void *, unsigned int *)); | |
83 int mad_decoder_finish(struct mad_decoder *); | |
84 | |
85 # define mad_decoder_options(decoder, opts) \ | |
86 ((void) ((decoder)->options = (opts))) | |
87 | |
88 int mad_decoder_run(struct mad_decoder *, enum mad_decoder_mode); | |
89 int mad_decoder_message(struct mad_decoder *, void *, unsigned int *); | |
90 | |
91 # endif |