From 59fff90d94e01ae7cf5c3ff3a274020f4d4b2785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= Date: Fri, 18 Feb 2011 15:32:40 +0100 Subject: options: change -alang and -slang to use string list type There is no reason to use manual language list splitting when an automatic split function is already available. Some types change from "unsigned char" to "char", but this shouldn't cause issues since [as]lang settings are unlikely to have characters above 127. --- libmpdemux/demuxer.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) (limited to 'libmpdemux/demuxer.c') diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 9efcf91862..a4cee9b8ea 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -1561,18 +1561,15 @@ int demuxer_set_angle(demuxer_t *demuxer, int angle) return angle; } -int demuxer_audio_track_by_lang_and_default(struct demuxer *d, char *lang) +int demuxer_audio_track_by_lang_and_default(struct demuxer *d, char **langt) { - if (!lang) - lang = ""; + int n = 0; while (1) { - lang += strspn(lang, ","); - int len = strcspn(lang, ","); + char *lang = langt ? langt[n++] : NULL; int id = -1; for (int i = 0; i < MAX_A_STREAMS; i++) { struct sh_audio *sh = d->a_streams[i]; - if (sh && (!len || sh->lang && strlen(sh->lang) == len && - !memcmp(lang, sh->lang, len))) { + if (sh && (!lang || sh->lang && !strcmp(lang, sh->lang))) { if (sh->default_track) return sh->aid; if (id < 0) @@ -1581,34 +1578,29 @@ int demuxer_audio_track_by_lang_and_default(struct demuxer *d, char *lang) } if (id >= 0) return id; - if (!len) + if (!lang) return -1; - lang += len; } } -int demuxer_sub_track_by_lang_and_default(struct demuxer *d, char *lang) +int demuxer_sub_track_by_lang_and_default(struct demuxer *d, char **langt) { - if (!lang) - lang = ""; + int n = 0; while (1) { - lang += strspn(lang, ","); - int len = strcspn(lang, ","); + char *lang = langt ? langt[n++] : NULL; int id = -1; for (int i = 0; i < MAX_S_STREAMS; i++) { struct sh_sub *sh = d->s_streams[i]; - if (sh && (!len || sh->lang && strlen(sh->lang) == len && - !memcmp(lang, sh->lang, len))) { + if (sh && (!lang || sh->lang && !strcmp(lang, sh->lang))) { if (sh->default_track) return sh->sid; if (id < 0) id = sh->sid; } } - if (!len) + if (!lang) return -1; if (id >= 0) return id; - lang += len; } } -- cgit v1.2.3