annotate libmpdemux/aviwrite.h @ 5242:d4ffcbe9ed3d

Recognize and skip ftype chunk used by some .mp4 files and add fallback to displaysize if imagesize is unavailable. Also update some doc info.
author atmos4
date Thu, 21 Mar 2002 16:42:58 +0000
parents fd279f14b9ab
children 8cd761968f35
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2529
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
1
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
2 #define AVIWRITE_MAX_STREAMS 16
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
3
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
4 #define AVIWRITE_TYPE_VIDEO 0
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
5 #define AVIWRITE_TYPE_AUDIO 1
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
6
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
7 typedef struct {
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
8 // muxer data:
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
9 int type; // audio or video
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
10 int id; // stream no
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
11 unsigned int ckid; // chunk id (00dc 01wb etc)
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
12 double timer;
2652
fd279f14b9ab new stream field: size
arpi
parents: 2592
diff changeset
13 unsigned int size;
2529
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
14 // buffering:
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
15 unsigned char *buffer;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
16 unsigned int buffer_size;
2592
2efa0d20e4c4 buffer_len added
arpi
parents: 2529
diff changeset
17 unsigned int buffer_len;
2529
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
18 // source stream:
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
19 void* source; // sh_audio or sh_video
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
20 int codec; // codec used for encoding. 0 means copy
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
21 // avi stream header:
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
22 AVIStreamHeader h; // Rate/Scale and SampleSize must be filled by caller!
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
23 // stream specific:
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
24 WAVEFORMATEX *wf;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
25 BITMAPINFOHEADER *bih; // in format
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
26 } aviwrite_stream_t;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
27
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
28 typedef struct {
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
29 // encoding:
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
30 MainAVIHeader avih;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
31 unsigned int movi_start;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
32 unsigned int movi_end;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
33 unsigned int file_end;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
34 // index:
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
35 AVIINDEXENTRY *idx;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
36 int idx_pos;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
37 int idx_size;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
38 // streams:
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
39 //int num_streams;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
40 aviwrite_stream_t* def_v; // default video stream (for general headers)
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
41 aviwrite_stream_t* streams[AVIWRITE_MAX_STREAMS];
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
42 } aviwrite_t;
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
43
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
44 aviwrite_stream_t* aviwrite_new_stream(aviwrite_t *muxer,int type);
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
45 aviwrite_t* aviwrite_new_muxer();
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
46 void aviwrite_write_chunk(aviwrite_t *muxer,aviwrite_stream_t *s, FILE *f,int len,unsigned int flags);
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
47 void aviwrite_write_header(aviwrite_t *muxer,FILE *f);
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
48 void aviwrite_write_index(aviwrite_t *muxer,FILE *f);
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
49
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
50
266dab71162b AVI muxer rewritten
arpi
parents:
diff changeset
51