summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demuxer.c
diff options
context:
space:
mode:
authormplayer-svn <svn@mplayerhq.hu>2012-02-19 13:15:41 +0000
committerwm4 <wm4@nowhere>2012-08-03 01:59:15 +0200
commit804bf91570a24b949a6c68530daaf9162df9a234 (patch)
tree479bb687f73be7d82f0a7ea43a7baa6b42cccb5f /libmpdemux/demuxer.c
parent14a67dd301bfd68712440a65b0acbafc2121910e (diff)
downloadmpv-804bf91570a24b949a6c68530daaf9162df9a234.tar.bz2
mpv-804bf91570a24b949a6c68530daaf9162df9a234.tar.xz
commands, dvd, dvdnav, bluray: cleanup sub/audio track language display
Code cleanup: Use a stream_control instead of global functions to get the language associate with a audio or subtitle stream from the streaming layer. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@34736 b3059339-0415-0410-9bf9-f77b7e298cf2 Support showing the stream language with br:// playback. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@34737 b3059339-0415-0410-9bf9-f77b7e298cf2 Fix DVDs showing the subtitle language as "unknown" for a long time. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@34777 b3059339-0415-0410-9bf9-f77b7e298cf2 Author: reimar Note: heavily modified by wm4 for this fork of mplayer.
Diffstat (limited to 'libmpdemux/demuxer.c')
-rw-r--r--libmpdemux/demuxer.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index f68c8c93f6..a9a827dd7a 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -1452,6 +1452,42 @@ int demuxer_set_angle(demuxer_t *demuxer, int angle)
return angle;
}
+char *demuxer_audio_lang(demuxer_t *d, int id)
+{
+ struct stream_lang_req req;
+ sh_audio_t *sh;
+ if (id < 0 || id >= MAX_A_STREAMS)
+ return NULL;
+ sh = d->a_streams[id];
+ if (!sh)
+ return NULL;
+ if (sh->lang)
+ return talloc_strdup(NULL, sh->lang);
+ req.type = stream_ctrl_audio;
+ req.id = sh->aid;
+ if (stream_control(d->stream, STREAM_CTRL_GET_LANG, &req) == STREAM_OK)
+ return req.name;
+ return NULL;
+}
+
+char *demuxer_sub_lang(demuxer_t *d, int id)
+{
+ struct stream_lang_req req;
+ sh_sub_t *sh;
+ if (id < 0 || id >= MAX_S_STREAMS)
+ return NULL;
+ sh = d->s_streams[id];
+ if (sh && sh->lang)
+ return talloc_strdup(NULL, sh->lang);
+ req.type = stream_ctrl_sub;
+ // assume 1:1 mapping so we can show the language of
+ // DVD subs even when we have not yet created the stream.
+ req.id = sh ? sh->sid : id;
+ if (stream_control(d->stream, STREAM_CTRL_GET_LANG, &req) == STREAM_OK)
+ return req.name;
+ return NULL;
+}
+
int demuxer_audio_track_by_lang_and_default(struct demuxer *d, char **langt)
{
int n = 0;