comparison demux_avi.c @ 1973:5216f108cb4f

all error/warn/info messages moved to help_mp-en.h for translation
author arpi
date Wed, 26 Sep 2001 21:35:14 +0000
parents 00505a8fa2b4
children d3378988a98e
comparison
equal deleted inserted replaced
1972:78924572fddf 1973:5216f108cb4f
4 #include <stdlib.h> 4 #include <stdlib.h>
5 #include <unistd.h> 5 #include <unistd.h>
6 6
7 #include "config.h" 7 #include "config.h"
8 #include "mp_msg.h" 8 #include "mp_msg.h"
9 #include "help_mp.h"
9 10
10 #include "stream.h" 11 #include "stream.h"
11 #include "demuxer.h" 12 #include "demuxer.h"
12 13
13 #include "wine/mmreg.h" 14 #include "wine/mmreg.h"
219 } 220 }
220 ret=demux_avi_read_packet(demux,id,len,priv->idx_pos-1,flags); 221 ret=demux_avi_read_packet(demux,id,len,priv->idx_pos-1,flags);
221 if(!ret && priv->skip_video_frames<=0) 222 if(!ret && priv->skip_video_frames<=0)
222 if(--max_packs==0){ 223 if(--max_packs==0){
223 demux->stream->eof=1; 224 demux->stream->eof=1;
224 mp_msg(MSGT_DEMUX,MSGL_ERR,"demux: file doesn't contain the selected audio or video stream\n"); 225 mp_msg(MSGT_DEMUX,MSGL_ERR,MSGTR_DoesntContainSelectedStream);
225 return 0; 226 return 0;
226 } 227 }
227 } while(ret!=1); 228 } while(ret!=1);
228 return 1; 229 return 1;
229 } 230 }
296 } else return 0; 297 } else return 0;
297 ret=demux_avi_read_packet(demux,id,len,idx_pos,flags); 298 ret=demux_avi_read_packet(demux,id,len,idx_pos,flags);
298 if(!ret && priv->skip_video_frames<=0) 299 if(!ret && priv->skip_video_frames<=0)
299 if(--max_packs==0){ 300 if(--max_packs==0){
300 demux->stream->eof=1; 301 demux->stream->eof=1;
301 mp_msg(MSGT_DEMUX,MSGL_ERR,"demux: file doesn't contain the selected audio or video stream\n"); 302 mp_msg(MSGT_DEMUX,MSGL_ERR,MSGTR_DoesntContainSelectedStream);
302 return 0; 303 return 0;
303 } 304 }
304 } while(ret!=1); 305 } while(ret!=1);
305 return 1; 306 return 1;
306 } 307 }
407 v_pos=pos; 408 v_pos=pos;
408 if(a_pos!=-1) break; 409 if(a_pos!=-1) break;
409 } 410 }
410 } 411 }
411 if(v_pos==-1){ 412 if(v_pos==-1){
412 mp_msg(MSGT_DEMUX,MSGL_ERR,"AVI_NI: missing video stream!? contact the author, it may be a bug :(\n"); 413 mp_msg(MSGT_DEMUX,MSGL_ERR,"AVI_NI: " MSGTR_MissingVideoStream);
413 return NULL; 414 return NULL;
414 // GUI_MSG( mplErrorAVINI ) 415 // GUI_MSG( mplErrorAVINI )
415 } 416 }
416 if(a_pos==-1){ 417 if(a_pos==-1){
417 mp_msg(MSGT_DEMUX,MSGL_INFO,"AVI_NI: No audio stream found -> nosound\n"); 418 mp_msg(MSGT_DEMUX,MSGL_INFO,"AVI_NI: " MSGTR_MissingAudioStream);
418 sh_audio=NULL; 419 sh_audio=NULL;
419 } else { 420 } else {
420 if(force_ni || abs(a_pos-v_pos)>0x100000){ // distance > 1MB 421 if(force_ni || abs(a_pos-v_pos)>0x100000){ // distance > 1MB
421 mp_msg(MSGT_DEMUX,MSGL_INFO,"%s NON-INTERLEAVED AVI file-format!\n",force_ni?"Forced":"Detected"); 422 mp_msg(MSGT_DEMUX,MSGL_INFO,MSGTR_NI_Message,force_ni?MSGTR_NI_Forced:MSGTR_NI_Detected);
422 demuxer->type=DEMUXER_TYPE_AVI_NI; // HACK!!!! 423 demuxer->type=DEMUXER_TYPE_AVI_NI; // HACK!!!!
423 pts_from_bps=1; // force BPS sync! 424 pts_from_bps=1; // force BPS sync!
424 } 425 }
425 } 426 }
426 } else { 427 } else {
427 // no index 428 // no index
428 if(force_ni){ 429 if(force_ni){
429 mp_msg(MSGT_DEMUX,MSGL_INFO,"Using NON-INTERLEAVED Broken AVI file-format!\n"); 430 mp_msg(MSGT_DEMUX,MSGL_INFO,MSGTR_UsingNINI);
430 demuxer->type=DEMUXER_TYPE_AVI_NINI; // HACK!!!! 431 demuxer->type=DEMUXER_TYPE_AVI_NINI; // HACK!!!!
431 priv->idx_pos_a= 432 priv->idx_pos_a=
432 priv->idx_pos_v=demuxer->movi_start; 433 priv->idx_pos_v=demuxer->movi_start;
433 pts_from_bps=1; // force BPS sync! 434 pts_from_bps=1; // force BPS sync!
434 } 435 }
435 demuxer->seekable=0; 436 demuxer->seekable=0;
436 } 437 }
437 if(!ds_fill_buffer(d_video)){ 438 if(!ds_fill_buffer(d_video)){
438 mp_msg(MSGT_DEMUX,MSGL_ERR,"AVI: missing video stream!? contact the author, it may be a bug :(\n"); 439 mp_msg(MSGT_DEMUX,MSGL_ERR,"AVI: " MSGTR_MissingVideoStreamBug);
439 return NULL; 440 return NULL;
440 // GUI_MSG( mplAVIErrorMissingVideoStream ) 441 // GUI_MSG( mplAVIErrorMissingVideoStream )
441 } 442 }
442 sh_video=d_video->sh;sh_video->ds=d_video; 443 sh_video=d_video->sh;sh_video->ds=d_video;
443 if(d_audio->id!=-2){ 444 if(d_audio->id!=-2){
444 mp_msg(MSGT_DEMUX,MSGL_V,"AVI: Searching for audio stream (id:%d)\n",d_audio->id); 445 mp_msg(MSGT_DEMUX,MSGL_V,"AVI: Searching for audio stream (id:%d)\n",d_audio->id);
445 if(!ds_fill_buffer(d_audio)){ 446 if(!ds_fill_buffer(d_audio)){
446 mp_msg(MSGT_DEMUX,MSGL_INFO,"AVI: No Audio stream found... ->nosound\n"); 447 mp_msg(MSGT_DEMUX,MSGL_INFO,"AVI: " MSGTR_MissingAudioStream);
447 sh_audio=NULL; 448 sh_audio=NULL;
448 } else { 449 } else {
449 sh_audio=d_audio->sh;sh_audio->ds=d_audio; 450 sh_audio=d_audio->sh;sh_audio->ds=d_audio;
450 sh_audio->format=sh_audio->wf->wFormatTag; 451 sh_audio->format=sh_audio->wf->wFormatTag;
451 } 452 }
497 int total=sh_video->video.dwLength; 498 int total=sh_video->video.dwLength;
498 if(total<=1){ 499 if(total<=1){
499 // bad video header, try to get it from audio 500 // bad video header, try to get it from audio
500 if(sh_audio) total=sh_video->fps*sh_audio->audio.dwLength/sh_audio->wf->nAvgBytesPerSec; 501 if(sh_audio) total=sh_video->fps*sh_audio->audio.dwLength/sh_audio->wf->nAvgBytesPerSec;
501 if(total<=1){ 502 if(total<=1){
502 mp_msg(MSGT_SEEK,MSGL_WARN,"Couldn't determine number of frames (for absoulte seek) \n"); 503 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_CouldntDetFNo);
503 total=0; 504 total=0;
504 } 505 }
505 } 506 }
506 rel_seek_frames=rel_seek_secs*total; 507 rel_seek_frames=rel_seek_secs*total;
507 } 508 }