[vdr] OSD-Resolution

Petri Helin phelin at googlemail.com
Wed Jan 24 06:57:46 CET 2007


Rene Hertell wrote:
> Hi Guys,
> 
> I remember that someone had some kind of patch for increasing the
> OSD-resoluion in VDR. I just can't find that post that mentioned about
> that...
> 
> Could anyone post a link to that site that had that patch.. I would like
> to try that out :-)
> 
> Regards,
> 
> René
> 
> _______________________________________________
> vdr mailing list
> vdr at linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
> 

The patches are here: http://www.netholic.com/viewtopic.php?t=1622
Unfortunately, if you do not speak Finnish, it might a bit hard to 
follow that thread....

What comes to VDR, you just need to change the defines for MAXOSDHEIGHT 
and -WIDTH in config.h (this is against 1.4.3-4):


--- config.h.orig       2006-10-28 02:30:20.000000000 +0300
+++ config.h    2006-10-28 00:14:11.000000000 +0300
@@ -41,9 +41,9 @@
  #define MAXLIFETIME 99

  #define MINOSDWIDTH  480
-#define MAXOSDWIDTH  672
+#define MAXOSDWIDTH  1280
  #define MINOSDHEIGHT 324
-#define MAXOSDHEIGHT 567
+#define MAXOSDHEIGHT 720

  #define MaxFileName 256
  #define MaxSkinName 16


In order to increase the resolution of the OSD you should use 
xineliboutput-plugin and patch it like this (patch will most likely be 
broken because it is inline):


--- osd.c.orig  2006-10-30 02:37:03.000000000 +0200
+++ osd.c       2006-10-30 03:46:49.000000000 +0200
@@ -155,7 +155,12 @@

    m_Device = Device;
    m_Shown = false;
-  CmdSize(m_Device, 0, 720, 576);
+
+  if(Setup.OSDWidth + (2*Setup.OSDLeft) > 720 || Setup.OSDHeight + 
(2*Setup.OSDTop) > 576) {
+    CmdSize(m_Device, 0, Setup.OSDWidth + (2*Setup.OSDLeft), 
Setup.OSDHeight + (2*Setup.OSDTop));
+  } else {
+    CmdSize(m_Device, 0, 720, 576);
+  }
  }

  cXinelibOsd::~cXinelibOsd()
@@ -182,11 +187,11 @@
    if(Result == oeOk)
      m_Shown = false;

-  if(Left() + Width() > 720 || Top() + Height() > 576) {
+  if(2*Left() + Width() > 720 || 2*Top() + Height() > 576) {
      LOGDBG("Detected HD OSD, size > %dx%d, using setup values %dx%d",
-          Left() + Width(), Top() + Height(),
-          Setup.OSDWidth, Setup.OSDHeight);
-    CmdSize(m_Device, 0, Setup.OSDWidth, Setup.OSDHeight);
+          2*Left() + Width(), 2*Top() + Height(),
+          Setup.OSDWidth + (2*Setup.OSDLeft), Setup.OSDHeight + 
(2*Setup.OSDTop));
+    CmdSize(m_Device, 0, Setup.OSDWidth + (2*Setup.OSDLeft), 
Setup.OSDHeight + (2*Setup.OSDTop));
    } else {
      CmdSize(m_Device, 0, 720, 576);
    }


After that you should change the resolution via VDR's setup menu. Note 
that menu plugins are not really compatible with the larger resolution, 
like for example the ttxtsubs plugin unless you make some changes in to 
them. Here is an example fix for the ttxtsubs plugin:

--- ttxtsubsdisplay.c.orig      2006-10-28 02:22:29.000000000 +0300
+++ ttxtsubsdisplay.c   2006-10-28 02:23:42.000000000 +0300
@@ -332,13 +332,13 @@

  enum {
    SCREENLEFT = 0,
-  SCREENRIGHT = 719,
+  SCREENRIGHT = 1280,
    SCREENTOP = 150,
-  SCREENBOTTOM = 575,
+  SCREENBOTTOM = 720,

    SIDEMARGIN = 125,
-  BOTNORM = 540,
-  BOTLETTERBOX = 482,
+  BOTNORM = 640,
+  BOTLETTERBOX = 520,

    ROWINCR = 43,
    ROWH = 34,

-Petri



More information about the vdr mailing list