[MPlayer-users] DVDNAV problem: subtitles

Reimar Döffinger Reimar.Doeffinger at gmx.de
Fri Nov 6 23:37:09 CET 2009


On Fri, Nov 06, 2009 at 07:20:10PM -0200, Dâniel Fraga wrote:
> 2) dvdnav:// 
> 
> 	The chosen subtitle (-slang pt) is not shown. So I have to
> select it.
> 
> 	And I noticed there're just 4 subtitles, which is nice, because
> it is the correct number (we don't need repetition like "8 subtitles").
> But they are shown in the wrong order:
> 
> 0) en <--- correct
> 1) pt <--- wrong: it should be english (it displays english sub)
> 2) en <--- wrong: it should be portuguese (it displays portuguese sub)
> 3) pt <--- correct
> 
> 	So if you reorder putting 0 and 2 first, then 1 and 3 after, it
> will be correct.

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
a "fixed" version of the last patch, if we are on the right track it
might fix -slang.

> 	Ps: all this testing was done on the dvd "Revolutionary Road".
> I'm only testing on this, so we can isolate what happens on this dvd.
> After we fix it, then I can test on others (I have lots of dvds here),
> but I think we're near the solution.

Of course if someone can provide a cut-down rip (i.e. just enough to
reproduce the issue, 100 MB at most) of such a problematic DVD that
might speed things up.
-------------- next part --------------
Index: stream/stream_dvdnav.c
===================================================================
--- stream/stream_dvdnav.c	(revision 29833)
+++ stream/stream_dvdnav.c	(working copy)
@@ -547,9 +547,7 @@
   for(i=0; i<32; i++)
   {
     char tmp[] = "unknown";
-    lg = dvdnav_get_spu_logical_stream(nav, i);
-    if(lg == 0xff) continue;
-    lang = dvdnav_spu_stream_to_lang(nav, lg);
+    lang = dvdnav_spu_stream_to_lang(nav, i);
     if(lang != 0xFFFF)
     {
       tmp[0] = lang >> 8;
@@ -795,9 +793,7 @@
   while(language && strlen(language)>=2) {
     lcode = (language[0] << 8) | (language[1]);
     for(k=0; k<32; k++) {
-      lg = dvdnav_get_spu_logical_stream(priv->dvdnav, k);
-      if(lg == 0xff) continue;
-      lang = dvdnav_spu_stream_to_lang(priv->dvdnav, lg);
+      lang = dvdnav_spu_stream_to_lang(priv->dvdnav, k);
       if(lang != 0xFFFF && lang == lcode) {
         return k;
       }
@@ -820,8 +816,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;


More information about the MPlayer-users mailing list