comparison libmpdemux/aviwrite.h @ 2529:266dab71162b

AVI muxer rewritten
author arpi
date Mon, 29 Oct 2001 00:55:15 +0000
parents
children 2efa0d20e4c4
comparison
equal deleted inserted replaced
2528:96803377ad53 2529:266dab71162b
1
2 #define AVIWRITE_MAX_STREAMS 16
3
4 #define AVIWRITE_TYPE_VIDEO 0
5 #define AVIWRITE_TYPE_AUDIO 1
6
7 typedef struct {
8 // muxer data:
9 int type; // audio or video
10 int id; // stream no
11 unsigned int ckid; // chunk id (00dc 01wb etc)
12 double timer;
13 // buffering:
14 unsigned char *buffer;
15 unsigned int buffer_size;
16 // source stream:
17 void* source; // sh_audio or sh_video
18 int codec; // codec used for encoding. 0 means copy
19 // avi stream header:
20 AVIStreamHeader h; // Rate/Scale and SampleSize must be filled by caller!
21 // stream specific:
22 WAVEFORMATEX *wf;
23 BITMAPINFOHEADER *bih; // in format
24 } aviwrite_stream_t;
25
26 typedef struct {
27 // encoding:
28 MainAVIHeader avih;
29 unsigned int movi_start;
30 unsigned int movi_end;
31 unsigned int file_end;
32 // index:
33 AVIINDEXENTRY *idx;
34 int idx_pos;
35 int idx_size;
36 // streams:
37 //int num_streams;
38 aviwrite_stream_t* def_v; // default video stream (for general headers)
39 aviwrite_stream_t* streams[AVIWRITE_MAX_STREAMS];
40 } aviwrite_t;
41
42 aviwrite_stream_t* aviwrite_new_stream(aviwrite_t *muxer,int type);
43 aviwrite_t* aviwrite_new_muxer();
44 void aviwrite_write_chunk(aviwrite_t *muxer,aviwrite_stream_t *s, FILE *f,int len,unsigned int flags);
45 void aviwrite_write_header(aviwrite_t *muxer,FILE *f);
46 void aviwrite_write_index(aviwrite_t *muxer,FILE *f);
47
48
49