diff options
Diffstat (limited to 'libmpdemux/demux_avi.c')
-rw-r--r-- | libmpdemux/demux_avi.c | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/libmpdemux/demux_avi.c b/libmpdemux/demux_avi.c index 2024f8aa62..12b04b3e01 100644 --- a/libmpdemux/demux_avi.c +++ b/libmpdemux/demux_avi.c @@ -43,7 +43,9 @@ extern const demuxer_desc_t demuxer_desc_avi_nini; int pts_from_bps=1; // Select ds from ID -demux_stream_t* demux_avi_select_stream(demuxer_t *demux,unsigned int id){ +static demux_stream_t* demux_avi_select_stream(demuxer_t *demux, + unsigned int id) +{ int stream_id=avi_stream_id(id); @@ -73,7 +75,7 @@ demux_stream_t* demux_avi_select_stream(demuxer_t *demux,unsigned int id){ // workaround old mencoder's bug: if(sh->audio.dwSampleSize==1 && sh->audio.dwScale==1 && (sh->wf->nBlockAlign==1152 || sh->wf->nBlockAlign==576)){ - mp_msg(MSGT_DEMUX,MSGL_WARN,MSGTR_WorkAroundBlockAlignHeaderBug); + mp_tmsg(MSGT_DEMUX,MSGL_WARN,"AVI: Working around CBR-MP3 nBlockAlign header bug!\n"); priv->audio_block_size=1; } } @@ -280,7 +282,7 @@ do{ if(ds) if(ds->packs+1>=MAX_PACKS || ds->bytes+len>=MAX_PACK_BYTES){ // this packet will cause a buffer overflow, switch to -ni mode!!! - mp_msg(MSGT_DEMUX,MSGL_WARN,MSGTR_SwitchToNi); + mp_tmsg(MSGT_DEMUX,MSGL_WARN,"\nBadly interleaved AVI file detected - switching to -ni mode...\n"); if(priv->idx_size>0){ // has index demux->type=DEMUXER_TYPE_AVI_NI; @@ -306,7 +308,7 @@ do{ // return value: // 0 = EOF or no stream found // 1 = successfully read a packet -int demux_avi_fill_buffer_ni(demuxer_t *demux,demux_stream_t* ds){ +static int demux_avi_fill_buffer_ni(demuxer_t *demux,demux_stream_t* ds){ avi_priv_t *priv=demux->priv; unsigned int id=0; unsigned int len; @@ -374,7 +376,7 @@ do{ // return value: // 0 = EOF or no stream found // 1 = successfully read a packet -int demux_avi_fill_buffer_nini(demuxer_t *demux,demux_stream_t* ds){ +static int demux_avi_fill_buffer_nini(demuxer_t *demux,demux_stream_t* ds){ avi_priv_t *priv=demux->priv; unsigned int id=0; unsigned int len; @@ -445,11 +447,11 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){ read_avi_header(demuxer,(demuxer->stream->flags & MP_STREAM_SEEK_BW)?index_mode:-2); if(demuxer->audio->id>=0 && !demuxer->a_streams[demuxer->audio->id]){ - mp_msg(MSGT_DEMUX,MSGL_WARN,MSGTR_InvalidAudioStreamNosound,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 } if(demuxer->video->id>=0 && !demuxer->v_streams[demuxer->video->id]){ - mp_msg(MSGT_DEMUX,MSGL_WARN,MSGTR_InvalidAudioStreamUsingDefault,demuxer->video->id); + mp_tmsg(MSGT_DEMUX,MSGL_WARN,"AVI: invalid video stream ID: %d - ignoring (using default)\n",demuxer->video->id); demuxer->video->id=-1; // autodetect } @@ -490,14 +492,15 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){ } } if(v_pos==-1){ - mp_msg(MSGT_DEMUX,MSGL_ERR,"AVI_NI: " MSGTR_MissingVideoStream); + mp_msg(MSGT_DEMUX, MSGL_ERR, "AVI_NI: %s", + mp_gtext("No video stream found.\n")); return NULL; } if(a_pos==-1){ d_audio->sh=sh_audio=NULL; } else { if(force_ni || abs(a_pos-v_pos)>0x100000){ // distance > 1MB - mp_msg(MSGT_DEMUX,MSGL_INFO,MSGTR_NI_Message,force_ni?MSGTR_NI_Forced:MSGTR_NI_Detected); + mp_tmsg(MSGT_DEMUX,MSGL_INFO,"%s NON-INTERLEAVED AVI file format.\n",force_ni?"Forced":"Detected"); demuxer->type=DEMUXER_TYPE_AVI_NI; // HACK!!!! demuxer->desc=&demuxer_desc_avi_ni; // HACK!!!! pts_from_bps=1; // force BPS sync! @@ -506,7 +509,7 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){ } else { // no index if(force_ni){ - mp_msg(MSGT_DEMUX,MSGL_INFO,MSGTR_UsingNINI); + mp_tmsg(MSGT_DEMUX,MSGL_INFO,"Using NON-INTERLEAVED broken AVI file format.\n"); demuxer->type=DEMUXER_TYPE_AVI_NINI; // HACK!!!! demuxer->desc=&demuxer_desc_avi_nini; // HACK!!!! priv->idx_pos_a= @@ -516,14 +519,17 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){ demuxer->seekable=0; } if(!ds_fill_buffer(d_video)){ - mp_msg(MSGT_DEMUX,MSGL_ERR,"AVI: " MSGTR_MissingVideoStreamBug); + mp_msg(MSGT_DEMUX, MSGL_ERR, "AVI: %s", + mp_gtext("Missing video stream!? Contact the author, " + "it may be a bug :(\n")); return NULL; } sh_video=d_video->sh;sh_video->ds=d_video; if(d_audio->id!=-2){ mp_msg(MSGT_DEMUX,MSGL_V,"AVI: Searching for audio stream (id:%d)\n",d_audio->id); if(!priv->audio_streams || !ds_fill_buffer(d_audio)){ - mp_msg(MSGT_DEMUX,MSGL_INFO,"AVI: " MSGTR_MissingAudioStream); + mp_msg(MSGT_DEMUX, MSGL_INFO, "AVI: %s", + mp_gtext("No audio stream found -> no sound.\n")); d_audio->sh=sh_audio=NULL; } else { sh_audio=d_audio->sh;sh_audio->ds=d_audio; @@ -563,7 +569,7 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){ // bad video header, try to get number of frames from audio if(sh_audio && sh_audio->wf->nAvgBytesPerSec) priv->numberofframes=sh_video->fps*sh_audio->audio.dwLength/sh_audio->audio.dwRate*sh_audio->audio.dwScale; if(priv->numberofframes<=1){ - mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_CouldntDetFNo); + mp_tmsg(MSGT_SEEK,MSGL_WARN,"Could not determine number of frames (for absolute seek).\n"); priv->numberofframes=0; } @@ -585,7 +591,7 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){ } -void demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flags){ +static void demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flags){ avi_priv_t *priv=demuxer->priv; demux_stream_t *d_audio=demuxer->audio; demux_stream_t *d_video=demuxer->video; @@ -758,7 +764,7 @@ void demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int } -void demux_close_avi(demuxer_t *demuxer) { +static void demux_close_avi(demuxer_t *demuxer) { avi_priv_t* priv=demuxer->priv; if(!priv) @@ -839,7 +845,7 @@ static int avi_check_file(demuxer_t *demuxer) if(id==mmioFOURCC('A','V','I',0x19)) return DEMUXER_TYPE_AVI; if(id==mmioFOURCC('O','N','2','f')){ - mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_ON2AviFormat); + mp_tmsg(MSGT_DEMUXER,MSGL_INFO,"ON2 AVI format"); return DEMUXER_TYPE_AVI; } } @@ -850,6 +856,7 @@ static int avi_check_file(demuxer_t *demuxer) static demuxer_t* demux_open_hack_avi(demuxer_t *demuxer) { + struct MPOpts *opts = demuxer->opts; sh_audio_t* sh_a; demuxer = demux_open_avi(demuxer); @@ -864,9 +871,9 @@ static demuxer_t* demux_open_hack_avi(demuxer_t *demuxer) stream_t* s; demuxer_t *od; s = new_ds_stream(demuxer->audio); - od = new_demuxer(s,DEMUXER_TYPE_OGG,-1,-2,-2,NULL); + od = new_demuxer(opts, s,DEMUXER_TYPE_OGG,-1,-2,-2,NULL); if(!demux_ogg_open(od)) { - mp_msg( MSGT_DEMUXER,MSGL_ERR,MSGTR_ErrorOpeningOGGDemuxer); + mp_tmsg( MSGT_DEMUXER,MSGL_ERR,"Unable to open the Ogg demuxer.\n"); free_stream(s); demuxer->audio->id = -2; } else |