summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authormosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-05-23 15:01:25 +0000
committermosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-05-23 15:01:25 +0000
commitd9beced7e677d7c394bb9d30f3f2803309ba04c6 (patch)
tree14761c05b4a0a6a45bb92f64772c3a863a288e73 /libmpdemux
parent49fc9d99b43566aa88c6f0bb4c567772cb44c5f3 (diff)
downloadmpv-d9beced7e677d7c394bb9d30f3f2803309ba04c6.tar.bz2
mpv-d9beced7e677d7c394bb9d30f3f2803309ba04c6.tar.xz
Support for selecting the audio track in Matroska files via -alang.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10168 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_mkv.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/libmpdemux/demux_mkv.cpp b/libmpdemux/demux_mkv.cpp
index bf00269c66..2b53965732 100644
--- a/libmpdemux/demux_mkv.cpp
+++ b/libmpdemux/demux_mkv.cpp
@@ -55,6 +55,7 @@ using namespace std;
// for e.g. "-slang ger"
extern char *dvdsub_lang;
+extern char *audio_lang;
// default values for Matroska elements
#define MKVD_TIMECODESCALE 1000000 // 1000000 = 1ms
@@ -1503,13 +1504,19 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) {
track = NULL;
if (demuxer->audio->id == -1) { // Automatically select an audio track.
- // Search for an audio track that has the 'default' flag set.
- for (i = 0; i < mkv_d->num_tracks; i++)
- if ((mkv_d->tracks[i]->type == 'a') && mkv_d->tracks[i]->ok &&
- mkv_d->tracks[i]->default_track) {
- track = mkv_d->tracks[i];
- break;
- }
+ // check if the user specified an audio language
+ if (audio_lang != NULL) {
+ track = find_track_by_language(mkv_d, audio_lang, NULL, 'a');
+ }
+ if (track == NULL)
+ // no audio language specified, or language not found
+ // Search for an audio track that has the 'default' flag set.
+ for (i = 0; i < mkv_d->num_tracks; i++)
+ if ((mkv_d->tracks[i]->type == 'a') && mkv_d->tracks[i]->ok &&
+ mkv_d->tracks[i]->default_track) {
+ track = mkv_d->tracks[i];
+ break;
+ }
if (track == NULL)
// No track has the 'default' flag set - let's take the first audio