summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libmpdemux/open.c6
-rw-r--r--mplayer.c2
2 files changed, 5 insertions, 3 deletions
diff --git a/libmpdemux/open.c b/libmpdemux/open.c
index f0a3e7fff2..927dbeb971 100644
--- a/libmpdemux/open.c
+++ b/libmpdemux/open.c
@@ -618,7 +618,8 @@ int dvd_chapter_from_cell(dvd_priv_t* dvd,int title,int cell)
int dvd_aid_from_lang(stream_t *stream, unsigned char* lang){
dvd_priv_t *d=stream->priv;
int code,i;
- while(lang && strlen(lang)>=2){
+if(lang){
+ while(strlen(lang)>=2){
code=lang[1]|(lang[0]<<8);
for(i=0;i<d->nr_of_channels;i++){
if(d->audio_streams[i].language==code){
@@ -631,7 +632,8 @@ int code,i;
lang+=2; while (lang[0]==',' || lang[0]==' ') ++lang;
}
mp_msg(MSGT_OPEN,MSGL_WARN,"No matching DVD audio language found!\n");
- return -1;
+}
+return d->nr_of_channels ? d->audio_streams[0].id : -1;
}
int dvd_sid_from_lang(stream_t *stream, unsigned char* lang){
diff --git a/mplayer.c b/mplayer.c
index 4a8278ffe3..650c4d0b32 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -1319,7 +1319,7 @@ if(stream_dump_type==5){
#ifdef USE_DVDREAD
if(stream->type==STREAMTYPE_DVD){
current_module="dvd lang->id";
- if(audio_lang && audio_id==-1) audio_id=dvd_aid_from_lang(stream,audio_lang);
+ if(audio_id==-1) audio_id=dvd_aid_from_lang(stream,audio_lang);
if(dvdsub_lang && dvdsub_id==-1) dvdsub_id=dvd_sid_from_lang(stream,dvdsub_lang);
current_module=NULL;
}