diff -urN MPlayer-svn-20060705.orig/libmpdemux/stream_dvd.c MPlayer-svn-20060705/libmpdemux/stream_dvd.c --- MPlayer-svn-20060705.orig/stream/stream_dvd.c 2006-07-03 14:16:58 +0300 +++ MPlayer-svn-20060705/stream/stream_dvd.c 2006-07-05 16:47:49 +0300 @@ -142,15 +142,19 @@ int dvd_aid_from_lang(stream_t *stream, unsigned char* lang) { dvd_priv_t *d=stream->priv; - int code,i; + int code,i,c; if(lang) { while(strlen(lang)>=2) { code=lang[1]|(lang[0]<<8); + c=isdigit(lang[2]) && lang[2]!='0'?lang[2]-0x30:1; for(i=0;inr_of_channels;i++) { if(d->audio_streams[i].language==code) { - mp_msg(MSGT_OPEN,MSGL_INFO,MSGTR_DVDaudioChannel, - d->audio_streams[i].id, lang[0],lang[1]); + if (c == 1){ + mp_msg(MSGT_OPEN,MSGL_INFO,MSGTR_DVDaudioChannel, d->audio_streams[i].id, lang[0],lang[1]); return d->audio_streams[i].id; + } else { + --c; + } } //printf("%X != %X (%c%c)\n",code,d->audio_streams[i].language,lang[0],lang[1]); }