diff options
Diffstat (limited to 'libmpdemux/aviwrite.h')
-rw-r--r-- | libmpdemux/aviwrite.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/libmpdemux/aviwrite.h b/libmpdemux/aviwrite.h new file mode 100644 index 0000000000..5c24f01b34 --- /dev/null +++ b/libmpdemux/aviwrite.h @@ -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); + + + |