[mythtv] hdtv reorg, crc checking + new gui patch

Daniel Thor Kristjansson danielk at cat.nyu.edu
Thu Feb 5 04:27:55 EST 2004


A deinterlace filter would be great. Would it require a full frame read
though? At 1920x1080 that would completely kill you on an AGPx8 bus.

BTW according to Ivan Kalvachev on the MPlayer list it's the full frame
copy required by some XvMC implementations to do OSD that makes it slow.
Notably my card, an nVidia 30 (GeForce 5200), is one of these. I've got
to do some of my own timings on this.


I've seperated out the patches for easy testing:
  http://www.mrl.nyu.edu/~danielk/mythtv/

A new patch use_mouse is unrelated to hdtv and independent, it just adds
a checkbox to the Appearance dialogs that lets you make the mouse cursor
visible. It helps you if you run myth on your desktop.
[attached, cvs ready?]

Another patch for general consumption is the hdtv-osd patch it may
actually help some PVR-250, and PVR-350 users if they use XvMC on some
implentations, notably the nVidia ones. I810/I815 XvMC (laptop video)
won't get any better with this. [testing ready]

The next patch is the hdtv-videodev patch, it patches the
myth_videodev[2].h headers to more closely match the BTTV 0.9.12
versions, and then adds pcHDTV stuff. I would love if people without
the hdtv card tried this to see if there are any incompatibilities. One
signal myth uses (VIDIOC_S_CTRL) changed from write only to read write,
which I think should be safe. Then pcHDTV adds a signal, but if you
don't call it you don't need a patched driver. [testing ready]


Finally there are three HDTV only patches.

The hdtv-signalcheck patch adds a signal check to the Tuner class and
avoids tuning in bad channels.
[ready for hdtv users, requires the hdtv-videodev patch]

The hdtvrecoder patch reorganizes the hdtvrecorder class adding some
error checking and avoiding bad streams. This is based some e-mail
correspondence with Doug, and a close reading of the mpeg-2 standard.
You need to also add tspacket.h to the mythtv/libs/libmythtv directory
[ready for hdtv users, requires the hdtv-signalcheck patch]

Then there is the XvMC error recovery patch, which is only for the
brave. I plan to look more closely at this anyway.

-- Daniel
  << When truth is outlawed; only outlaws will tell the truth. >> - RLiegh

On Wed, 4 Feb 2004, Doug Larrick wrote:

]On Tue, 3 Feb 2004, Daniel Thor Kristjansson wrote:
]> >
]> > Thanks, but that is mostly the work of Jason Hoos and Doug Larrick.
]>
]> Yes I know, but they only have so much time.  It is nice to
]> have another person improving the system!
]
]I agree.  My time has also dropped off recently due to some (happy)
]family matters.
]
]It also means more eyes to check over changes to the code.
]
]My current (slow) project is to implement a 'bob' deinterlace filter,
]which shows each field sequentially (at double the frame rate).  This
]is ideal for those of us with CRT HDTV's which would do this processing
]internally anyway when presented with a proper interlaced 1080i stream.
]
]The problem I'm seeing may be related to the slow OSD issue (or maybe
]not).  It seems that it takes the video card a considerable amount of
]time to display a 1920x1080 frame (can't imagine why :-) ), potentially
]longer than NuppelVideoPlayer's sync code is allowing.  This problem
]causes unsmooth motion (uneven frame cadence), which is on the border
]of acceptable at 30 fps (normal 1080i), but really bad at 60 fps (after
]bob deinterlacing).  I just need to find the time to do some more
]instrumenting of the code.
]
]-Doug
-------------- next part --------------
--- mythtv/libs/libmyth/mythdialogs.cpp	2004-02-05 03:52:24.000000000 -0500
+++ mythtv-new/libs/libmyth/mythdialogs.cpp	2004-02-05 03:01:04.000000000 -0500
@@ -26,6 +26,7 @@
 #include "mythdialogs.h"
 #include "lcddevice.h"
 #include "mythmediamonitor.h"
+#include "mythcontext.h"
 
 #ifdef USE_LIRC
 static void *SpawnLirc(void *param)
@@ -193,8 +194,11 @@
     setFixedSize(QSize(d->screenwidth, d->screenheight));
 
     setFont(gContext->GetMediumFont());
-    setCursor(QCursor(Qt::BlankCursor));
-    qApp->setOverrideCursor(QCursor(Qt::BlankCursor));
+
+    bool hideCursor = gContext->GetNumSetting("GuiHideMouseCursor",1);
+    QCursor cursor = (hideCursor) ? (Qt::BlankCursor) : (Qt::ArrowCursor);
+    setCursor(cursor);
+    qApp->setOverrideCursor(cursor);
 
     gContext->ThemeWidget(this);
 
--- mythtv/programs/mythfrontend/main.cpp	2004-02-05 03:52:24.000000000 -0500
+++ mythtv-new/programs/mythfrontend/main.cpp	2004-02-04 20:30:57.000000000 -0500
@@ -682,7 +682,8 @@
                     ++argpos;
                 }
             }
-        } else if (!strcmp(a.argv()[argpos],"-v") ||
+	} 
+	else if (!strcmp(a.argv()[argpos],"-v") ||
             !strcmp(a.argv()[argpos],"--verbose"))
         {
             if (a.argc() > argpos)
--- mythtv/programs/mythfrontend/globalsettings.cpp	2004-02-05 03:52:24.000000000 -0500
+++ mythtv-new/programs/mythfrontend/globalsettings.cpp	2004-02-04 20:29:09.000000000 -0500
@@ -966,6 +966,17 @@
     };
 };
 
+class GuiHideMouseCursor: public CheckBoxSetting, public GlobalSetting {
+public:
+    GuiHideMouseCursor() :
+        GlobalSetting("GuiHideMouseCursor") {
+        setLabel(QObject::tr("Hide Mouse Cursor in Myth"));
+        setValue(true);
+        setHelpText(QObject::tr("If checked, the mouse cursor will be invisible."
+                                "If unchecked, the mouse cursor will be visible."));
+    };
+};
+
 class RunInWindow: public CheckBoxSetting, public GlobalSetting {
 public:
     RunInWindow():
@@ -1760,6 +1771,7 @@
     screen->addChild(new GuiOffsetX());
     screen->addChild(new GuiOffsetY());
     screen->addChild(new GuiSizeForTV());
+    screen->addChild(new GuiHideMouseCursor());
     screen->addChild(new RunInWindow());
     addChild(screen);
 


More information about the mythtv-dev mailing list