avcodec.h
上传用户:jxp0626
上传日期:2007-01-08
资源大小:102k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Unix_Linux

  1. #include "common.h"
  2. enum CodecID {
  3.     CODEC_ID_NONE, 
  4.     CODEC_ID_MPEG1VIDEO,
  5.     CODEC_ID_H263,
  6.     CODEC_ID_RV10,
  7.     CODEC_ID_MP2,
  8.     CODEC_ID_AC3,
  9.     CODEC_ID_MJPEG,
  10.     CODEC_ID_DIVX,
  11. };
  12. enum CodecType {
  13.     CODEC_TYPE_VIDEO,
  14.     CODEC_TYPE_AUDIO,
  15. };
  16. #define CODEC_FLAG_HQ 0x0001 /* high quality (non real time) encoding */
  17.     
  18. typedef struct AVEncodeContext {
  19.     int bit_rate;
  20.     int rate; /* frames per sec or samples per sec */
  21.     int flags;
  22.     /* video only */
  23.     int width, height;
  24.     int gop_size; /* 0 = intra only */
  25.     
  26.     /* audio only */
  27.     int channels;
  28.     /* the following data should not be initialized */
  29.     int frame_size; /* in samples, initialized when calling 'init' */
  30.     int frame_number; /* audio or video frame number */
  31.     int key_frame;    /* true if the previous compressed frame was 
  32.                          a key frame (intra, or seekable) */
  33.     int quality;      /* quality of the previous encoded frame 
  34.                          (between 1 (good) and 31 (bad)) */
  35.     struct AVEncoder *codec;
  36.     void *priv_data;
  37. } AVEncodeContext;
  38. typedef struct AVEncoder {
  39.     char *name;
  40.     int type;
  41.     int id;
  42.     int priv_data_size;
  43.     int (*init)(AVEncodeContext *);
  44.     int (*encode)(AVEncodeContext *, UINT8 *buf, int buf_size, void *data);
  45.     int (*close)(AVEncodeContext *);
  46.     struct AVEncoder *next;
  47. } AVEncoder;
  48. extern AVEncoder ac3_encoder;
  49. extern AVEncoder mp2_encoder;
  50. extern AVEncoder mpeg1video_encoder;
  51. extern AVEncoder h263_encoder;
  52. extern AVEncoder rv10_encoder;
  53. extern AVEncoder mjpeg_encoder;
  54. extern AVEncoder divx_encoder;
  55. /* resample.c */
  56. typedef struct {
  57.     /* fractional resampling */
  58.     UINT32 incr; /* fractional increment */
  59.     UINT32 frac;
  60.     int last_sample;
  61.     /* integer down sample */
  62.     int iratio;  /* integer divison ratio */
  63.     int icount, isum;
  64.     int inv;
  65. } ReSampleChannelContext;
  66. typedef struct {
  67.     ReSampleChannelContext channel_ctx[2];
  68.     float ratio;
  69.     /* channel convert */
  70.     int input_channels, output_channels;
  71. } ReSampleContext;
  72. int audio_resample_init(ReSampleContext *s, 
  73.                         int output_channels, int input_channels, 
  74.                         int output_rate, int input_rate);
  75. int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples);