[mythtvnz] Myth DVD creation
Steven Ellis
mythtvnz@lists.linuxnut.co.nz
Tue, 21 Nov 2006 18:20:55 +1300 (NZDT)
------=_20061121182055_17192
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
Andrew Ruthven wrote:
> Hi Steven,
>
> On Tue, 2006-11-21 at 16:01 +1300, Steven Ellis wrote:
>> Andrew Ruthven wrote:
>> > The backend now has a tendency to crash, whereas with 0.19 I had no
>> > issues (I'm not using DVB-S yet). And while watching recorded shows,
>> > the frontend will sometimes lock up, this is repeatable with the same
>> > shows.
>
>> I'm pretty much at the same SVN fixes level as you and my setup is rock
>> solid. A couple of questions.
>
> Hmmm...
>
>> 1. What CPU have you got?
>
> The backend is a PIII 500MHz (I have a 800EB waiting to be swapped into
> the case). 512MB of RAM.
>
> the frontend is a Via Epia M10000. 256MB of RAM.
All pretty standard
>> 2. Are you running 64bit or 32bit - there are a couple of 64bit issues
>
> All 32bit. All my hardware at home is *far* to old to be 64bit! :(
Fine. I don't run 64bit on my 64bit hw anyway
>> 3. What capture cards do you have?
>
> Hauppauge PVR250 and a SkyStar2 which is not connected to a dish, but is
> still configured in MythTV.
Ok it might be the backend getting confused about opening the extra card.
What do you have configured for the card like videosource etc. I had some
issues with a partially configured DVB-T card they kept causing the
backend to crash
Another one to check is that the OS has loaded the drivers correctly for
the card on boot. If it is in a partially configured state and the backend
does a device scan it can crash the backend.
>> 4. What settings are you using for playback - I needed a extra XvMC
>> patch
>> to sort out some problems
>
> I'm using XvMC to use the MPEG2 H/W decoder on the Via. The picture is
> being deinterlaced, but no custom filters are being used. I found that
> the OpenGL stuff just completely failed to work, and haven't had time to
> work out why, so I'm just using the QT painter. I'm not sure if there
> is anything else you want here...
Lots of odd XvMC issues out there. I haven't played with the Via XvMC
support but it shouldn't crash your backend.
> Do you mind letting me know which patch you needed?
Not at all. Patch attached. It sorts out a non fading osd issue that left
a ghost behind. The ghost had a major effect on playback performance.
Steve
------=_20061121182055_17192
Content-Type: text/x-patch; name="xvmc_ghost.diff"
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="xvmc_ghost.diff"
diff -Nru --exclude .svn mythtv.orig/libs/libmythtv/NuppelVideoPlayer.cpp mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
--- mythtv.orig/libs/libmythtv/NuppelVideoPlayer.cpp 2006-10-01 17:26:39.000000000 +1300
+++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp 2006-10-06 15:28:59.000000000 +1300
@@ -2474,6 +2474,12 @@
}
}
}
+ else
+ {
+ OSD *osd = GetOSD();
+ if (osd)
+ osd->HideSet("interactive");
+ }
// handle EIA-608 and Teletext
if (textDisplayMode & kDisplayNUVCaptions)
@@ -5835,7 +5841,7 @@
if (GetInteractiveTV())
interactiveTV->Restart(chanid, cardid, isLiveTV);
}
-
+
osd->ClearAll("interactive");
itvosd->Display();
osd->SetVisible(itvosd, 0);
diff -Nru --exclude .svn mythtv.orig/libs/libmythtv/osd.cpp mythtv/libs/libmythtv/osd.cpp
--- mythtv.orig/libs/libmythtv/osd.cpp 2006-09-11 23:06:08.000000000 +1200
+++ mythtv/libs/libmythtv/osd.cpp 2006-10-06 15:22:58.000000000 +1300
@@ -2474,6 +2474,11 @@
totalfadetime = 0;
}
+OSDSurface *OSD::GetDisplaySurface(void)
+{
+ return drawSurface;
+}
+
OSDSurface *OSD::Display(void)
{
bool anytodisplay = false;
@@ -2545,7 +2550,7 @@
m_setsvisible = anytodisplay;
- if (m_setsvisible)
+ if (m_setsvisible && !drawSurface->IsClear())
return drawSurface;
return NULL;
diff -Nru --exclude .svn mythtv.orig/libs/libmythtv/osd.h mythtv/libs/libmythtv/osd.h
--- mythtv.orig/libs/libmythtv/osd.h 2006-08-27 17:17:27.000000000 +1200
+++ mythtv/libs/libmythtv/osd.h 2006-10-06 15:22:04.000000000 +1300
@@ -60,6 +60,8 @@
OSDSurface *Display(void);
+ OSDSurface *GetDisplaySurface(void);
+
void ClearAll(const QString &name);
void ClearAllText(const QString &name);
void SetText(const QString &name, QMap<QString, QString> &infoMap,
diff -Nru --exclude .svn mythtv.orig/libs/libmythtv/osdsurface.cpp mythtv/libs/libmythtv/osdsurface.cpp
--- mythtv.orig/libs/libmythtv/osdsurface.cpp 2006-08-27 17:17:27.000000000 +1200
+++ mythtv/libs/libmythtv/osdsurface.cpp 2006-10-06 15:22:41.000000000 +1300
@@ -135,6 +135,11 @@
usedRegions = QRegion();
}
+bool OSDSurface::IsClear(void)
+{
+ return (usedRegions == QRegion());
+}
+
bool OSDSurface::IntersectsDrawn(QRect &newrect)
{
QMutexLocker lock(&usedRegionsLock);
@@ -799,7 +804,7 @@
if (startline < 0) startline = 0;
if (endline >= height) endline = height - 1;
- if (startcol < 0) endcol = 0;
+ if (startcol < 0) startcol = 0;
if (endcol >= width) endcol = width - 1;
unsigned char *src;
diff -Nru --exclude .svn mythtv.orig/libs/libmythtv/osdsurface.h mythtv/libs/libmythtv/osdsurface.h
--- mythtv.orig/libs/libmythtv/osdsurface.h 2006-08-27 17:17:27.000000000 +1200
+++ mythtv/libs/libmythtv/osdsurface.h 2006-10-06 15:22:00.000000000 +1300
@@ -24,6 +24,7 @@
void Clear(void);
void ClearUsed(void);
+ bool IsClear();
bool IntersectsDrawn(QRect &newrect);
void AddRect(QRect &newrect);
diff -Nru --exclude .svn mythtv.orig/libs/libmythtv/videoout_xv.cpp mythtv/libs/libmythtv/videoout_xv.cpp
--- mythtv.orig/libs/libmythtv/videoout_xv.cpp 2006-09-11 23:06:08.000000000 +1200
+++ mythtv/libs/libmythtv/videoout_xv.cpp 2006-10-06 15:22:29.000000000 +1300
@@ -2859,7 +2859,7 @@
VideoFrame *osdframe = NULL;
int ret = DisplayOSD(xvmc_osd->OSDFrame(), osd, -1,
xvmc_osd->GetRevision());
- OSDSurface *osdsurf = osd->Display();
+ OSDSurface *osdsurf = osd->GetDisplaySurface();
if (osdsurf)
xvmc_osd->SetRevision(osdsurf->GetRevision());
if (ret >= 0 && xvmc_osd->NeedFrame())
------=_20061121182055_17192--