From e26b7314cf6751a5b2aafb9c29395711758e30b5 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 3 Aug 2012 09:32:08 +0200 Subject: 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. --- command.c | 12 +++++++----- mplayer.c | 9 +++++++-- 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) -- cgit v1.2.3