summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorClément Bœsch <ubitux@gmail.com>2011-02-18 15:32:40 +0100
committerUoti Urpala <uau@mplayer2.org>2011-04-20 04:22:42 +0300
commit59fff90d94e01ae7cf5c3ff3a274020f4d4b2785 (patch)
treea6f161866ae6918c4d2a2aebd9327716f3b53ea2 /libmpdemux
parent2a7c5a1365ad194a42e3f667f85828a152544857 (diff)
downloadmpv-59fff90d94e01ae7cf5c3ff3a274020f4d4b2785.tar.bz2
mpv-59fff90d94e01ae7cf5c3ff3a274020f4d4b2785.tar.xz
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.
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_ts.c2
-rw-r--r--libmpdemux/demuxer.c28
-rw-r--r--libmpdemux/demuxer.h6
3 files changed, 14 insertions, 22 deletions
diff --git a/libmpdemux/demux_ts.c b/libmpdemux/demux_ts.c
index 237a524bd4..0085f286e0 100644
--- a/libmpdemux/demux_ts.c
+++ b/libmpdemux/demux_ts.c
@@ -1029,7 +1029,7 @@ static demuxer_t *demux_open_ts(demuxer_t * demuxer)
if(demuxer->opts->audio_lang != NULL)
{
- strncpy(params.alang, demuxer->opts->audio_lang, 3);
+ strncpy(params.alang, demuxer->opts->audio_lang[0], 3);
params.alang[3] = 0;
}
else
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;
}
}
diff --git a/libmpdemux/demuxer.h b/libmpdemux/demuxer.h
index 4a8a7545d1..ed2d651a8c 100644
--- a/libmpdemux/demuxer.h
+++ b/libmpdemux/demuxer.h
@@ -421,7 +421,7 @@ int demuxer_set_angle(struct demuxer *demuxer, int angle);
int demuxer_angles_count(struct demuxer *demuxer);
/* Get the index of a track.
- * lang is a comma-separated list, NULL is same as empty list
+ * lang is a string list, NULL is same as empty list
* Sort tracks based on the following criteria:
* 1) earlier match in lang list, or last no match
* 2) track is marked default (default wins)
@@ -431,7 +431,7 @@ int demuxer_angles_count(struct demuxer *demuxer);
* For subs, select best track according to the same criteria, but return -1
* if all tracks are no-lang-match, not-default.
*/
-int demuxer_audio_track_by_lang_and_default(struct demuxer *d, char *lang);
-int demuxer_sub_track_by_lang_and_default(struct demuxer *d, char *lang);
+int demuxer_audio_track_by_lang_and_default(struct demuxer *d, char **langt);
+int demuxer_sub_track_by_lang_and_default(struct demuxer *d, char **langt);
#endif /* MPLAYER_DEMUXER_H */