summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-08-03 09:32:08 +0200
committerwm4 <wm4@nowhere>2012-08-03 12:48:03 +0200
commite26b7314cf6751a5b2aafb9c29395711758e30b5 (patch)
tree78b09c49f044bf96a9bb6ee0c188e319ff7489a4
parente13c05366557cbe3bf371010f2087a57f072a7eb (diff)
downloadmpv-e26b7314cf6751a5b2aafb9c29395711758e30b5.tar.bz2
mpv-e26b7314cf6751a5b2aafb9c29395711758e30b5.tar.xz
mplayer: fix output of audio/sub language in terminal output
The SH_COMMON lang field seems to be blatantly unreliable and is not always set by demux_lavf (at least not with dvdnav:// ). Also fix the same for the show_tracks_osd slave command.
-rw-r--r--command.c12
-rw-r--r--mplayer.c9
2 files changed, 14 insertions, 7 deletions
diff --git a/command.c b/command.c
index 053ac653ee..ee9fcbc48e 100644
--- a/command.c
+++ b/command.c
@@ -2665,13 +2665,13 @@ static void show_tracks_on_osd(MPContext *mpctx)
if (cnt > 1)
res = talloc_asprintf_append(res, "(Warning: more than one video stream.)\n");
-#define STD_TRACK_HDR(st, id) \
+#define STD_TRACK_HDR(st, id, lang) \
res = talloc_asprintf_append(res, "%s(%d) ", IND, st->id); \
if (st->title) { \
res = talloc_asprintf_append(res, "'%s' ", st->title); \
} \
- if (st->lang) { \
- res = talloc_asprintf_append(res, "(%s) ", st->lang); \
+ if (lang) { \
+ res = talloc_asprintf_append(res, "(%s) ", lang); \
}
for (n = 0; n < MAX_A_STREAMS; n++) {
@@ -2680,7 +2680,8 @@ static void show_tracks_on_osd(MPContext *mpctx)
cnt++;
if (a == cur_a)
res = talloc_asprintf_append(res, "> ");
- STD_TRACK_HDR(a, aid)
+ char *lang = demuxer_audio_lang(mpctx->demuxer, a->index);
+ STD_TRACK_HDR(a, aid, lang)
if (a == cur_a)
res = talloc_asprintf_append(res, "<");
res = talloc_asprintf_append(res, "\n");
@@ -2695,7 +2696,8 @@ static void show_tracks_on_osd(MPContext *mpctx)
cnt++;
if (s == cur_s)
res = talloc_asprintf_append(res, "> ");
- STD_TRACK_HDR(s, sid)
+ char *lang = demuxer_sub_lang(mpctx->demuxer, s->index);
+ STD_TRACK_HDR(s, sid, lang)
char *type = "?";
switch (s->type) {
case 't': type = "SRT"; break;
diff --git a/mplayer.c b/mplayer.c
index f221421521..59c7229c8e 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -401,8 +401,13 @@ static void print_stream(struct MPContext *mpctx, sh_common_t *s)
}
mp_msg(MSGT_CPLAYER, MSGL_INFO, "[stream] ID %d: %s", s->demuxer_id, tname);
mp_msg(MSGT_CPLAYER, MSGL_INFO, " --%s=%d", selopt, s->id);
- if (s->lang)
- mp_msg(MSGT_CPLAYER, MSGL_INFO, " --%s=%s", langopt, s->lang);
+ char *lang = NULL;
+ if (s->stream_type == STREAM_AUDIO)
+ lang = demuxer_audio_lang(mpctx->demuxer, s->index);
+ if (s->stream_type == STREAM_SUBTITLE)
+ lang = demuxer_sub_lang(mpctx->demuxer, s->index);
+ if (lang)
+ mp_msg(MSGT_CPLAYER, MSGL_INFO, " --%s=%s", langopt, lang);
if (s->default_track)
mp_msg(MSGT_CPLAYER, MSGL_INFO, " (*)");
if (s->title)