From 2c8e65329f3cabd86428d26dd0ed2fec49f38b41 Mon Sep 17 00:00:00 2001 From: eugeni Date: Fri, 29 Feb 2008 17:25:43 +0000 Subject: Demuxer-independent functions for selecting tracks based on language. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26118 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demuxer.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'libmpdemux/demuxer.c') diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 28388bb192..e842164d3a 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -1405,3 +1405,35 @@ int demuxer_set_angle(demuxer_t *demuxer, int angle) { return angle; } + +int demuxer_audio_track_by_lang(demuxer_t* d, char* lang) +{ + int i, len; + lang += strspn(lang, ","); + while((len = strcspn(lang, ",")) > 0) { + for (i=0; i < MAX_A_STREAMS; ++i) { + sh_audio_t* sh = d->a_streams[i]; + if (sh && sh->lang && strncmp(sh->lang, lang, len) == 0) + return sh->aid; + } + lang += len; + lang += strspn(lang, ","); + } + return -1; +} + +int demuxer_sub_track_by_lang(demuxer_t* d, char* lang) +{ + int i, len; + lang += strspn(lang, ","); + while((len = strcspn(lang, ",")) > 0) { + for (i=0; i < MAX_S_STREAMS; ++i) { + sh_sub_t* sh = d->s_streams[i]; + if (sh && sh->lang && strncmp(sh->lang, lang, len) == 0) + return sh->sid; + } + lang += len; + lang += strspn(lang, ","); + } + return -1; +} -- cgit v1.2.3