view libmpdemux/aviwrite.h @ 7964:143d730908ae

here is a somewhat generic equalizer implementation for the X11 vo drivers using the window's colormap (DirectColor). this method is using the video card's hardware gamma ramp so it involves no performance penalties at all. patch by lucho <lucho@haemimont.bg>
author arpi
date Tue, 29 Oct 2002 20:27:47 +0000
parents 3854945aefbb
children
line wrap: on
line source


#define AVIWRITE_MAX_STREAMS 16

#define AVIWRITE_TYPE_VIDEO 0
#define AVIWRITE_TYPE_AUDIO 1

typedef struct {
  // muxer data:
  int type;  // audio or video
  int id;    // stream no
  unsigned int ckid; // chunk id (00dc 01wb etc)
  double timer;
  off_t size;
  // buffering:
  unsigned char *buffer;
  unsigned int buffer_size;
  unsigned int buffer_len;
  // source stream:
  void* source; // sh_audio or sh_video
  int codec; // codec used for encoding. 0 means copy
  // avi stream header:
  AVIStreamHeader h;  // Rate/Scale and SampleSize must be filled by caller!
  // stream specific:
  WAVEFORMATEX *wf;
  BITMAPINFOHEADER *bih;   // in format
} aviwrite_stream_t;

typedef struct {
  unsigned int id;
  char *text;
} aviwrite_info_t;

typedef struct {
  // encoding:
  MainAVIHeader avih;
  unsigned int movi_start;
  unsigned int movi_end;
  unsigned int file_end;
  // index:
  AVIINDEXENTRY *idx;
  int idx_pos;
  int idx_size;
  // streams:
  //int num_streams;
  aviwrite_stream_t* def_v;  // default video stream (for general headers)
  aviwrite_stream_t* streams[AVIWRITE_MAX_STREAMS];
} aviwrite_t;

aviwrite_stream_t* aviwrite_new_stream(aviwrite_t *muxer,int type);
aviwrite_t* aviwrite_new_muxer();
void aviwrite_write_chunk(aviwrite_t *muxer,aviwrite_stream_t *s, FILE *f,int len,unsigned int flags);
void aviwrite_write_header(aviwrite_t *muxer,FILE *f);
void aviwrite_write_index(aviwrite_t *muxer,FILE *f);