annotate src/libmad-0.15.1b/decoder.h @ 83:ae30d91d2ffe

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