summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_avi.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmpdemux/demux_avi.c')
-rw-r--r--libmpdemux/demux_avi.c62
1 files changed, 31 insertions, 31 deletions
diff --git a/libmpdemux/demux_avi.c b/libmpdemux/demux_avi.c
index 197076adbe..7ceffb33c1 100644
--- a/libmpdemux/demux_avi.c
+++ b/libmpdemux/demux_avi.c
@@ -124,7 +124,7 @@ static int demux_avi_read_packet(demuxer_t *demux,demux_stream_t *ds,unsigned in
avi_priv_t *priv=demux->priv;
int skip;
float pts=0;
-
+
mp_dbg(MSGT_DEMUX,MSGL_DBG3,"demux_avi.read_packet: %X\n",id);
if(ds==demux->audio){
@@ -152,7 +152,7 @@ static int demux_avi_read_packet(demuxer_t *demux,demux_stream_t *ds,unsigned in
// update blockcount:
priv->audio_block_no+=priv->audio_block_size ?
((len+priv->audio_block_size-1)/priv->audio_block_size) : 1;
- } else
+ } else
if(ds==demux->video){
// video
if(priv->skip_video_frames>0){
@@ -171,9 +171,9 @@ static int demux_avi_read_packet(demuxer_t *demux,demux_stream_t *ds,unsigned in
if(ds) ++priv->video_pack_no;
}
-
+
skip=(len+1)&(~1); // total bytes in this chunk
-
+
if(ds){
mp_dbg(MSGT_DEMUX,MSGL_DBG2,"DEMUX_AVI: Read %d data bytes from packet %04X\n",len,id);
ds_read_packet(ds,demux->stream,len,pts,idxpos,flags);
@@ -216,9 +216,9 @@ do{
AVIINDEXENTRY *idx=NULL;
if(priv->idx_size>0 && priv->idx_pos<priv->idx_size){
off_t pos;
-
+
idx=&((AVIINDEXENTRY *)priv->idx)[priv->idx_pos++];
-
+
if(idx->dwFlags&AVIIF_LIST){
// LIST
continue;
@@ -237,7 +237,7 @@ do{
demux->filepos=stream_tell(demux->stream);
id=stream_read_dword_le(demux->stream);
if(stream_eof(demux->stream)) return 0; // EOF!
-
+
if(id!=idx->ckid){
mp_msg(MSGT_DEMUX,MSGL_V,"ChunkID mismatch! raw=%.4s idx=%.4s \n",(char *)&id,(char *)&idx->ckid);
if(valid_fourcc(idx->ckid))
@@ -261,7 +261,7 @@ do{
id=avi_find_id(demux->stream);
len=stream_read_dword_le(demux->stream);
if(stream_eof(demux->stream)) return 0; // EOF!
-
+
if(id==mmioFOURCC('L','I','S','T') || id==mmioFOURCC('R', 'I', 'F', 'F')){
id=stream_read_dword_le(demux->stream); // list or RIFF type
continue;
@@ -288,7 +288,7 @@ do{
// quit now, we can't even (no enough buffer memory) read this packet :(
return -1;
}
-
+
ret=demux_avi_read_packet(demux,ds,id,len,priv->idx_pos-1,flags);
} while(ret!=1);
return 1;
@@ -309,15 +309,15 @@ do{
AVIINDEXENTRY *idx=NULL;
int idx_pos=0;
demux->filepos=stream_tell(demux->stream);
-
+
if(ds==demux->video) idx_pos=priv->idx_pos_v++; else
if(ds==demux->audio) idx_pos=priv->idx_pos_a++; else
idx_pos=priv->idx_pos++;
-
+
if(priv->idx_size>0 && idx_pos<priv->idx_size){
off_t pos;
idx=&((AVIINDEXENTRY *)priv->idx)[idx_pos];
-
+
if(idx->dwFlags&AVIIF_LIST){
// LIST
continue;
@@ -387,18 +387,18 @@ do{
len=stream_read_dword_le(demux->stream);
if(stream_eof(demux->stream)) return 0;
-
+
if(id==mmioFOURCC('L','I','S','T')){
id=stream_read_dword_le(demux->stream); // list type
continue;
}
-
+
if(id==mmioFOURCC('R','I','F','F')){
mp_msg(MSGT_DEMUX,MSGL_V,"additional RIFF header...\n");
id=stream_read_dword_le(demux->stream); // "AVIX"
continue;
}
-
+
if(ds==demux_avi_select_stream(demux,id)){
// read it!
ret=demux_avi_read_packet(demux,ds,id,len,priv->idx_pos-1,0);
@@ -407,7 +407,7 @@ do{
int skip=(len+1)&(~1); // total bytes in this chunk
stream_skip(demux->stream,skip);
}
-
+
} while(ret!=1);
fpos[0]=stream_tell(demux->stream);
return 1;
@@ -444,7 +444,7 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){
//---- AVI header:
read_avi_header(demuxer,(demuxer->stream->flags & STREAM_SEEK_BW)?index_mode:-2);
-
+
if(demuxer->audio->id>=0 && !demuxer->a_streams[demuxer->audio->id]){
mp_tmsg(MSGT_DEMUX,MSGL_WARN,"AVI: invalid audio stream ID: %d - ignoring (nosound)\n",demuxer->audio->id);
demuxer->audio->id=-2; // disabled
@@ -453,7 +453,7 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){
mp_tmsg(MSGT_DEMUX,MSGL_WARN,"AVI: invalid video stream ID: %d - ignoring (using default)\n",demuxer->video->id);
demuxer->video->id=-1; // autodetect
}
-
+
stream_reset(demuxer->stream);
stream_seek(demuxer->stream,demuxer->movi_start);
priv->idx_pos=0;
@@ -478,7 +478,7 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){
(int)((AVIINDEXENTRY *)priv->idx)[0].dwChunkOffset,
(int)((AVIINDEXENTRY *)priv->idx)[1].dwChunkOffset);
}
-
+
if(priv->idx_size>0){
// check that file is non-interleaved:
int i;
@@ -546,7 +546,7 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){
size_t vsamples=0;
size_t asamples=0;
int i;
- for(i=0;i<priv->idx_size;i++){
+ for(i=0;i<priv->idx_size;i++){
int id=avi_stream_id(((AVIINDEXENTRY *)priv->idx)[i].ckid);
int len=((AVIINDEXENTRY *)priv->idx)[i].dwChunkLength;
if(sh_video->ds->id == id) {
@@ -573,7 +573,7 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){
if(priv->numberofframes<=1){
mp_tmsg(MSGT_SEEK,MSGL_WARN,"Could not determine number of frames (for absolute seek).\n");
priv->numberofframes=0;
- }
+ }
if(sh_audio){
if(sh_audio->wf->nAvgBytesPerSec && sh_audio->audio.dwSampleSize!=1){
@@ -589,7 +589,7 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){
}
return demuxer;
-
+
}
@@ -611,11 +611,11 @@ static void demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,float audio_de
// seek absolute
video_chunk_pos=0;
}
-
+
if(flags&SEEK_FACTOR){
rel_seek_frames=rel_seek_secs*priv->numberofframes;
}
-
+
priv->skip_video_frames=0;
priv->avi_audio_pts=0;
@@ -652,7 +652,7 @@ static void demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,float audio_de
sh_video->num_frames=sh_video->num_frames_decoded=d_video->pack_no;
priv->avi_video_pts=d_video->pack_no*(float)sh_video->video.dwScale/(float)sh_video->video.dwRate;
d_video->pos=video_chunk_pos;
-
+
mp_msg(MSGT_SEEK,MSGL_DBG2,"V_SEEK: pack=%d pts=%5.3f chunk=%d \n",d_video->pack_no,priv->avi_video_pts,video_chunk_pos);
// ------------ STEP 2: seek audio, find the right chunk & pos ------------
@@ -668,7 +668,7 @@ static void demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,float audio_de
int curr_audio_pos=-1;
int audio_chunk_pos=-1;
int chunk_max=(demuxer->type==DEMUXER_TYPE_AVI)?video_chunk_pos:priv->idx_size;
-
+
if(sh_audio->audio.dwSampleSize){
// constant rate audio stream
/* immediate seeking to audio position, including when streams are delayed */
@@ -694,13 +694,13 @@ static void demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,float audio_de
mp_msg(MSGT_SEEK,MSGL_V,"SEEK: i=%d (max:%d) dpos=%d (wanted:%d) \n",
i,chunk_max,(int)d_audio->dpos,curr_audio_pos);
-
+
} else {
// VBR audio
/* immediate seeking to audio position, including when streams are delayed */
int chunks=(priv->avi_video_pts + audio_delay)*(float)sh_audio->audio.dwRate/(float)sh_audio->audio.dwScale;
audio_chunk_pos=0;
-
+
// find audio chunk pos:
for(i=0;i<priv->idx_size && chunks>0;i++){
int id=((AVIINDEXENTRY *)priv->idx)[i].ckid;
@@ -720,17 +720,17 @@ static void demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,float audio_de
}
}
}
-
+
// Now we have:
// audio_chunk_pos = chunk no in index table (it's <=chunk_max)
// skip_audio_bytes = bytes to be skipped after chunk seek
// d-audio->pack_no = chunk_no in stream at audio_chunk_pos
// d_audio->dpos = bytepos in stream at audio_chunk_pos
// let's seek!
-
+
// update stream position:
d_audio->pos=audio_chunk_pos;
-
+
if(demuxer->type==DEMUXER_TYPE_AVI){
// interleaved stream:
if(audio_chunk_pos<video_chunk_pos){