decoder.h
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:2k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.  * libmad - MPEG audio decoder library
  3.  */
  4. # ifndef LIBMAD_DECODER_H
  5. # define LIBMAD_DECODER_H
  6. # include "stream.h"
  7. # include "frame.h"
  8. # include "synth.h"
  9. enum mad_decoder_mode {
  10.   MAD_DECODER_MODE_SYNC  = 0,
  11.   MAD_DECODER_MODE_ASYNC
  12. };
  13. enum mad_flow {
  14.   MAD_FLOW_CONTINUE = 0x0000, /* 正常进行 */
  15.   MAD_FLOW_STOP     = 0x0010, /* 正常结束*/
  16.   MAD_FLOW_BREAK    = 0x0011, /* 结束解码,显示错误 */
  17.   MAD_FLOW_IGNORE   = 0x0020 /* 忽略当前祯 */
  18. };
  19. struct mad_decoder {
  20.   enum mad_decoder_mode mode;
  21.   int options;
  22.   struct {
  23.     long pid;
  24.     int in;
  25.     int out;
  26.   } async;
  27.   struct {
  28.     struct mad_stream stream;
  29.     struct mad_frame frame;
  30.     struct mad_synth synth;
  31.   } *sync;
  32.   void *cb_data;
  33.   enum mad_flow (*input_func)(void *, struct mad_stream *);
  34.   enum mad_flow (*header_func)(void *, struct mad_header const *);
  35.   enum mad_flow (*filter_func)(void *,
  36.        struct mad_stream const *, struct mad_frame *);
  37.   enum mad_flow (*output_func)(void *,
  38.        struct mad_header const *, struct mad_pcm *);
  39.   enum mad_flow (*error_func)(void *, struct mad_stream *, struct mad_frame *);
  40.   enum mad_flow (*message_func)(void *, void *, unsigned int *);
  41. };
  42. void mad_decoder_init(struct mad_decoder *, void *,
  43.       enum mad_flow (*)(void *, struct mad_stream *),
  44.       enum mad_flow (*)(void *, struct mad_header const *),
  45.       enum mad_flow (*)(void *,
  46. struct mad_stream const *,
  47. struct mad_frame *),
  48.       enum mad_flow (*)(void *,
  49. struct mad_header const *,
  50. struct mad_pcm *),
  51.       enum mad_flow (*)(void *,
  52. struct mad_stream *,
  53. struct mad_frame *),
  54.       enum mad_flow (*)(void *, void *, unsigned int *));
  55. int mad_decoder_finish(struct mad_decoder *);
  56. # define mad_decoder_options(decoder, opts)  
  57.     ((void) ((decoder)->options = (opts)))
  58. int mad_decoder_run(struct mad_decoder *, enum mad_decoder_mode);
  59. int mad_decoder_message(struct mad_decoder *, void *, unsigned int *);
  60. # endif