From ea1d75800931055c8a04cf76e8b6c914c2ed3e23 Mon Sep 17 00:00:00 2001 From: atmos4 Date: Thu, 21 Feb 2002 15:44:51 +0000 Subject: Fix automatic vobsub detection and make it silent. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4788 b3059339-0415-0410-9bf9-f77b7e298cf2 --- mplayer.c | 4 ++-- vobsub.c | 25 +++++++++++++++---------- vobsub.h | 2 +- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/mplayer.c b/mplayer.c index ca13bbd92c..23ebbc7831 100644 --- a/mplayer.c +++ b/mplayer.c @@ -766,7 +766,7 @@ play_dvd: current_module="vobsub"; if (vobsub_name){ - vo_vobsub=vobsub_open(vobsub_name); + vo_vobsub=vobsub_open(vobsub_name,1); if(vo_vobsub==NULL) mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CantLoadSub,vobsub_name); }else if(sub_auto && filename && (strlen(filename)>=5)){ @@ -774,7 +774,7 @@ play_dvd: char *buf = malloc((strlen(filename)-3) * sizeof(char)); memset(buf,0,strlen(filename)-3); // make sure string is terminated strncpy(buf, filename, strlen(filename)-4); - vo_vobsub=vobsub_open(buf); + vo_vobsub=vobsub_open(buf,0); free(buf); } if(vo_vobsub) diff --git a/vobsub.c b/vobsub.c index fbdcd2344a..8919ca94d2 100644 --- a/vobsub.c +++ b/vobsub.c @@ -589,7 +589,7 @@ vobsub_parse_one_line(vobsub_t *vob, FILE *fd) } void * -vobsub_open(const char *const name) +vobsub_open(const char *const name, const int force) { vobsub_t *vob = malloc(sizeof(vobsub_t)); if (vob) { @@ -605,9 +605,10 @@ vobsub_open(const char *const name) strcpy(buf, name); strcat(buf, ".ifo"); fd = fopen(buf, "rb"); - if (fd == NULL) - perror("VobSub: Can't open IFO file"); - else { + if (fd == NULL) { + if(force) + perror("VobSub: Can't open IFO file"); + } else { // parse IFO header unsigned char block[0x800]; const char *const ifo_magic = "DVDVIDEO-VTS"; @@ -660,9 +661,12 @@ vobsub_open(const char *const name) strcpy(buf, name); strcat(buf, ".idx"); fd = fopen(buf, "rb"); - if (fd == NULL) - perror("VobSub: Can't open IDX file"); - else { + if (fd == NULL) { + if(force) + perror("VobSub: Can't open IDX file"); + else + return NULL; + } else { while (vobsub_parse_one_line(vob, fd) >= 0) /* NOOP */ ; fclose(fd); @@ -672,9 +676,10 @@ vobsub_open(const char *const name) strcpy(buf, name); strcat(buf, ".sub"); mpg = mpeg_open(buf); - if (mpg == NULL) - perror("VobSub: Can't open SUB file"); - else { + if (mpg == NULL) { + if(force) + perror("VobSub: Can't open SUB file"); + } else { long last_pts_diff = 0; while (!mpeg_eof(mpg)) { off_t pos = mpeg_tell(mpg); diff --git a/vobsub.h b/vobsub.h index fd389aaa89..b26aa8aa5d 100644 --- a/vobsub.h +++ b/vobsub.h @@ -1,7 +1,7 @@ #ifndef MPLAYER_VOBSUB_H #define MPLAYER_VOBSUB_H -extern void *vobsub_open(const char *subname); +extern void *vobsub_open(const char *subname, const int force); extern void vobsub_process(void *vob, float pts); extern void vobsub_reset(void *vob); extern void vobsub_draw(void *vob, int dxs, int dys, void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); -- cgit v1.2.3