Hallo,
anbei drei kleine Patches gegen plain vdr oder vdr-ext und xineliboutput-cvs.
Damit habe ich mit vdr-1.7.7 und xineliboutput ein unskaliertes OSD auf meinem 1440x900 Display.
Die Patches gegen den VDR ergänzen Einstellungen - DVB um zwei Einträge für Bildschirm-breite und -höhe. Damit kann die Auflösung des Bildschirms angegeben werden.
In osd.c wird dann noch UpdateOsdSize verändert wobei dieser Teil sicher noch verbessert werden kann:
Code
int Height;
eVideoAspect Aspect;
cDevice::PrimaryDevice()->GetVideoSize(Width, Height, Aspect);
+ if (Setup.DisplayWidth > 720 || Setup.DisplayHeight > 576) {
+ Width = Setup.DisplayWidth;
+ Height = Setup.DisplayHeight;
+ }
if (Width != oldWidth || Height != oldHeight || Aspect != oldAspect || Force) {
Setup.OSDLeft = int(round(Width * Setup.OSDLeftP));
Setup.OSDTop = int(round(Height * Setup.OSDTopP));
Der Patch gegen xineliboutput sieht so aus:
Diff
diff -ruNp xineliboutput-cvs20090504/osd.c xineliboutput-cvs20090504-displaysize/osd.c
--- xineliboutput-cvs20090504/osd.c 2009-05-03 22:35:36.000000000 +0200
+++ xineliboutput-cvs20090504-displaysize/osd.c 2009-05-06 09:45:49.000000000 +0200
@@ -365,12 +365,19 @@ eOsdError cXinelibOsd::SetAreas(const tA
}
// Detect full OSD area size
+#if APIVERSNUM >= 10707
+ if (Setup.DisplayWidth > 720 || Setup.DisplayHeight > 576) {
+ m_ExtentWidth = Setup.DisplayWidth;
+ m_ExtentHeight = Setup.DisplayHeight;
+ LOGDBG("Detected HD Display, using OSD size %dx%d", m_ExtentWidth, m_ExtentHeight);
+#else
if(Left() + Width() > 720 || Top() + Height() > 576) {
m_ExtentWidth = Setup.OSDWidth + 2 * Setup.OSDLeft;
m_ExtentHeight = Setup.OSDHeight + 2 * Setup.OSDTop;
LOGDBG("Detected HD OSD, size > %dx%d, using setup values %dx%d",
2*Left() + Width(), 2*Top() + Height(),
m_ExtentWidth, m_ExtentHeight);
+#endif
} else {
m_ExtentWidth = 720;
m_ExtentHeight = 576;
Display More
Alles in allem also recht überschaubar
Gruß
Marc