On Sat, Nov 07, 2009 at 12:11:41AM -0200, D?niel Fraga wrote: > On Fri, 6 Nov 2009 23:37:09 +0100 > Reimar D?ffinger <Reimar.Doeffinger at gmx.de> wrote: > > > There is something seriously wrong, because this is the console output: > > subtitle ( sid ): 0 language: en > > ID_SID_0_LANG=en > > subtitle ( sid ): 2 language: en > > ID_SID_2_LANG=en > > subtitle ( sid ): 4 language: unknown > > subtitle ( sid ): 6 language: unknown > > > > So here the first 2 are detected as en. > > And there is also no "pt" language, I wonder where that suddenly pops > > out from. > > And according to this -sid 0 and -sid 2 should be english, -sid 4 and > > -sid 6 are for some reason detected as unknown... > > To be honest I really can't imagine I'm on the right track here, and > > I probably should better read up on libdvdnav first, but attached is > > Yes, it must be a libdvdnav issue. I understand you're in a > complicated situation looking into other people's broken code. Well, it probably is MPlayer's code that is broken. It still isn't my code though. > > a "fixed" version of the last patch, if we are on the right track it > > might fix -slang. > > Ok, it really fixed the slang issue, BUT as I have the problem > above (subtitles out of order) it shows the english subtitle even if it > selected the corret one (1) pt. So if you can fix the above problem, > this issue will be gone. Try attached patch, probably fixes slang but the other issue probably return. > And a small detail: it fixed the -slang issue if I use > dvdnav://8 only. In other words, I lose the benefit of dvdnav > (navigating through menus, looking into extras etc). If I use dvdnav:// > the -slang will not work. I guess that is what the code that I removed with the previous patch was supposed to fix, however it couldn't really work properly. -------------- next part -------------- Index: stream/stream_dvdnav.c =================================================================== --- stream/stream_dvdnav.c (revision 29833) +++ stream/stream_dvdnav.c (working copy) @@ -556,9 +556,9 @@ tmp[1] = lang & 0xFF; tmp[2] = 0; } - mp_msg(MSGT_OPEN,MSGL_STATUS,MSGTR_DVDsubtitleLanguage, i, tmp); + mp_msg(MSGT_OPEN,MSGL_STATUS,MSGTR_DVDsubtitleLanguage, lg, tmp); if (lang != 0xFFFF && lang && tmp[0]) - mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_SID_%d_LANG=%s\n", i, tmp); + mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_SID_%d_LANG=%s\n", lg, tmp); } } @@ -799,7 +799,7 @@ if(lg == 0xff) continue; lang = dvdnav_spu_stream_to_lang(priv->dvdnav, lg); if(lang != 0xFFFF && lang == lcode) { - return k; + return lg; } } language += 2; @@ -820,8 +820,7 @@ uint16_t lang; dvdnav_priv_t *priv = stream->priv; if(sid < 0) return 0; - lg = dvdnav_get_spu_logical_stream(priv->dvdnav, sid); - lang = dvdnav_spu_stream_to_lang(priv->dvdnav, lg); + lang = dvdnav_spu_stream_to_lang(priv->dvdnav, sid); if(lang == 0xffff) return 0; buf[0] = lang >> 8; buf[1] = lang & 0xFF;