diff options
Diffstat (limited to 'sub')
-rw-r--r-- | sub/vobsub.c | 10 | ||||
-rw-r--r-- | sub/vobsub.h | 2 |
2 files changed, 7 insertions, 5 deletions
diff --git a/sub/vobsub.c b/sub/vobsub.c index 08efa3acec..a2fc94fb17 100644 --- a/sub/vobsub.c +++ b/sub/vobsub.c @@ -1109,20 +1109,22 @@ int vobsub_get_index_by_id(void *vobhandle, int id) return j; } -int vobsub_set_from_lang(void *vobhandle, unsigned char * lang) +int vobsub_set_from_lang(void *vobhandle, char **lang) { int i; vobsub_t *vob= vobhandle; - while (lang && strlen(lang) >= 2) { + if (!lang) + goto end; + for (int n = 0; lang[n]; n++) { for (i = 0; i < vob->spu_streams_size; i++) if (vob->spu_streams[i].id) - if ((strncmp(vob->spu_streams[i].id, lang, 2) == 0)) { + if ((strncmp(vob->spu_streams[i].id, lang[n], 2) == 0)) { vobsub_id = i; mp_msg(MSGT_VOBSUB, MSGL_INFO, "Selected VOBSUB language: %d language: %s\n", i, vob->spu_streams[i].id); return 0; } - lang+=2;while (lang[0]==',' || lang[0]==' ') ++lang; } +end: mp_msg(MSGT_VOBSUB, MSGL_WARN, "No matching VOBSUB language found!\n"); return -1; } diff --git a/sub/vobsub.h b/sub/vobsub.h index b076e4b6bc..3cef1347e5 100644 --- a/sub/vobsub.h +++ b/sub/vobsub.h @@ -41,7 +41,7 @@ unsigned int vobsub_rgb_to_yuv(unsigned int rgb); void *vobsub_out_open(const char *basename, const unsigned int *palette, unsigned int orig_width, unsigned int orig_height, const char *id, unsigned int index); void vobsub_out_output(void *me, const unsigned char *packet, int len, double pts); void vobsub_out_close(void *me); -int vobsub_set_from_lang(void *vobhandle, unsigned char * lang); +int vobsub_set_from_lang(void *vobhandle, char **lang); void vobsub_seek(void * vobhandle, float pts); #endif /* MPLAYER_VOBSUB_H */ |