summaryrefslogtreecommitdiffstats
path: root/libmpdemux/muxer_avi.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-19 00:33:11 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-19 00:33:11 +0000
commit7a7d2cdd249a0bae74268f34c464ec0474a39894 (patch)
treed68d1e721cbc0ba1b06fbc52e3b7f201e27c363d /libmpdemux/muxer_avi.c
parent970435ce12de15022db3f920b293799462dd7518 (diff)
downloadmpv-7a7d2cdd249a0bae74268f34c464ec0474a39894.tar.bz2
mpv-7a7d2cdd249a0bae74268f34c464ec0474a39894.tar.xz
Cleanup of the muxer API, func parameters muxer & muxer_f eliminated.
patch by Andriy N. Gritsenko <andrej@lucky.net> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9008 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/muxer_avi.c')
-rw-r--r--libmpdemux/muxer_avi.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/libmpdemux/muxer_avi.c b/libmpdemux/muxer_avi.c
index 4f8597f3a4..04bba0d57f 100644
--- a/libmpdemux/muxer_avi.c
+++ b/libmpdemux/muxer_avi.c
@@ -30,6 +30,7 @@ extern char *info_comment;
static muxer_stream_t* avifile_new_stream(muxer_t *muxer,int type){
muxer_stream_t* s;
+ if (!muxer) return NULL;
if(muxer->avih.dwStreams>=MUXER_MAX_STREAMS){
printf("Too many streams! increase MUXER_MAX_STREAMS !\n");
return NULL;
@@ -42,6 +43,7 @@ static muxer_stream_t* avifile_new_stream(muxer_t *muxer,int type){
s->id=muxer->avih.dwStreams;
s->timer=0.0;
s->size=0;
+ s->muxer=muxer;
switch(type){
case MUXER_TYPE_VIDEO:
s->ckid=mmioFOURCC(('0'+s->id/10),('0'+(s->id%10)),'d','c');
@@ -88,7 +90,8 @@ if(len>0){
}
}
-static void avifile_write_chunk(muxer_t *muxer,muxer_stream_t *s, FILE *f,size_t len,unsigned int flags){
+static void avifile_write_chunk(muxer_stream_t *s,size_t len,unsigned int flags){
+ muxer_t *muxer=s->muxer;
// add to the index:
if(muxer->idx_pos>=muxer->idx_size){
@@ -97,12 +100,12 @@ static void avifile_write_chunk(muxer_t *muxer,muxer_stream_t *s, FILE *f,size_t
}
muxer->idx[muxer->idx_pos].ckid=s->ckid;
muxer->idx[muxer->idx_pos].dwFlags=flags; // keyframe?
- muxer->idx[muxer->idx_pos].dwChunkOffset=ftell(f)-(muxer->movi_start-4);
+ muxer->idx[muxer->idx_pos].dwChunkOffset=ftell(muxer->file)-(muxer->movi_start-4);
muxer->idx[muxer->idx_pos].dwChunkLength=len;
++muxer->idx_pos;
// write out the chunk:
- write_avi_chunk(f,s->ckid,len,s->buffer); /* unsigned char */
+ write_avi_chunk(muxer->file,s->ckid,len,s->buffer); /* unsigned char */
// alter counters:
if(s->h.dwSampleSize){
@@ -135,11 +138,12 @@ static void write_avi_list(FILE *f,unsigned int id,int len){
// muxer->streams[i]->wf->cbSize
#define WFSIZE(wf) (sizeof(WAVEFORMATEX)+(((wf)->cbSize)?((wf)->cbSize-2):0))
-static void avifile_write_header(muxer_t *muxer,FILE *f){
+static void avifile_write_header(muxer_t *muxer){
uint32_t riff[3];
unsigned int i;
unsigned int hdrsize;
muxer_info_t info[16];
+ FILE *f=muxer->file;
// RIFF header:
riff[0]=mmioFOURCC('R','I','F','F');
@@ -275,19 +279,19 @@ info[i].id=0;
muxer->movi_start=ftell(f);
}
-static void avifile_write_index(muxer_t *muxer,FILE *f){
- muxer->movi_end=ftell(f);
+static void avifile_write_index(muxer_t *muxer){
+ muxer->movi_end=ftell(muxer->file);
if(muxer->idx && muxer->idx_pos>0){
int i;
// fixup index entries:
// for(i=0;i<muxer->idx_pos;i++) muxer->idx[i].dwChunkOffset-=muxer->movi_start-4;
// write index chunk:
for (i=0; i<muxer->idx_pos; i++) le2me_AVIINDEXENTRY((&muxer->idx[i]));
- write_avi_chunk(f,ckidAVINEWINDEX,16*muxer->idx_pos,muxer->idx); /* AVIINDEXENTRY */
+ write_avi_chunk(muxer->file,ckidAVINEWINDEX,16*muxer->idx_pos,muxer->idx); /* AVIINDEXENTRY */
for (i=0; i<muxer->idx_pos; i++) le2me_AVIINDEXENTRY((&muxer->idx[i]));
muxer->avih.dwFlags|=AVIF_HASINDEX;
}
- muxer->file_end=ftell(f);
+ muxer->file_end=ftell(muxer->file);
}
void muxer_init_muxer_avi(muxer_t *muxer){