diff options
author | mplayer-svn <svn@mplayerhq.hu> | 2012-02-19 13:15:41 +0000 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2012-08-03 01:59:15 +0200 |
commit | 804bf91570a24b949a6c68530daaf9162df9a234 (patch) | |
tree | 479bb687f73be7d82f0a7ea43a7baa6b42cccb5f /libmpdemux/demuxer.c | |
parent | 14a67dd301bfd68712440a65b0acbafc2121910e (diff) | |
download | mpv-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.c | 36 |
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; |