123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- # ifndef LIBMAD_STREAM_H
- # define LIBMAD_STREAM_H
- # include "bit.h"
- # define MAD_BUFFER_GUARD 8
- # define MAD_BUFFER_MDLEN (511 + 2048 + MAD_BUFFER_GUARD)
- enum mad_error {
- MAD_ERROR_NONE = 0x0000,
- MAD_ERROR_BUFLEN = 0x0001,
- MAD_ERROR_BUFPTR = 0x0002,
- MAD_ERROR_NOMEM = 0x0031,
- MAD_ERROR_LOSTSYNC = 0x0101,
- MAD_ERROR_BADLAYER = 0x0102,
- MAD_ERROR_BADBITRATE = 0x0103,
- MAD_ERROR_BADSAMPLERATE = 0x0104,
- MAD_ERROR_BADEMPHASIS = 0x0105,
- MAD_ERROR_BADCRC = 0x0201,
- MAD_ERROR_BADBITALLOC = 0x0211,
- MAD_ERROR_BADSCALEFACTOR = 0x0221,
- MAD_ERROR_BADMODE = 0x0222,
- MAD_ERROR_BADFRAMELEN = 0x0231,
- MAD_ERROR_BADBIGVALUES = 0x0232,
- MAD_ERROR_BADBLOCKTYPE = 0x0233,
- MAD_ERROR_BADSCFSI = 0x0234,
- MAD_ERROR_BADDATAPTR = 0x0235,
- MAD_ERROR_BADPART3LEN = 0x0236,
- MAD_ERROR_BADHUFFTABLE = 0x0237,
- MAD_ERROR_BADHUFFDATA = 0x0238,
- MAD_ERROR_BADSTEREO = 0x0239
- };
- # define MAD_RECOVERABLE(error) ((error) & 0xff00)
- struct mad_stream {
- unsigned char const *buffer;
- unsigned char const *bufend;
- unsigned long skiplen;
- int sync;
- unsigned long freerate;
- unsigned char const *this_frame;
- unsigned char const *next_frame;
- struct mad_bitptr ptr;
- struct mad_bitptr anc_ptr;
- unsigned int anc_bitlen;
- unsigned char (*main_data)[MAD_BUFFER_MDLEN];
-
- unsigned int md_len;
- int options;
- enum mad_error error;
- };
- enum {
- MAD_OPTION_IGNORECRC = 0x0001,
- MAD_OPTION_HALFSAMPLERATE = 0x0002
- # if 0
- MAD_OPTION_LEFTCHANNEL = 0x0010,
- MAD_OPTION_RIGHTCHANNEL = 0x0020,
- MAD_OPTION_SINGLECHANNEL = 0x0030
- # endif
- };
- void mad_stream_init(struct mad_stream *);
- void mad_stream_finish(struct mad_stream *);
- # define mad_stream_options(stream, opts) \
- ((void) ((stream)->options = (opts)))
- void mad_stream_buffer(struct mad_stream *,
- unsigned char const *, unsigned long);
- void mad_stream_skip(struct mad_stream *, unsigned long);
- int mad_stream_sync(struct mad_stream *);
- char const *mad_stream_errorstr(struct mad_stream const *);
- # endif
|