diff libmpdemux/aviwrite.h @ 2529:266dab71162b

AVI muxer rewritten
author arpi
date Mon, 29 Oct 2001 00:55:15 +0000
parents
children 2efa0d20e4c4
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libmpdemux/aviwrite.h	Mon Oct 29 00:55:15 2001 +0000
@@ -0,0 +1,49 @@
+
+#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;
+  // buffering:
+  unsigned char *buffer;
+  unsigned int buffer_size;
+  // 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 {
+  // 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);
+
+
+