Wied Pakusa wrote:
> Hello.
>
> I hope you can help me, because i'm almost getting mad about the mythtv
> installation :-)
>
> My hardware:
> -> Hauppauge PVR 250
> -> Matrox G450 DH
>
[...]
> XDirectFB runs with a nice quality on my TV-Out.
> I want to use XDirectFB (mythtv not compiled against qte but with
> --enable-directfb) because qte doesn't use directfb but only the
> linux-fb device - the quality is not so nice like directfb.
> But that's not import - my problem still remaining is:
>
> When i start the playback of TV or a movie it isn't displayed on my TV
> but on Head1 (Monitor) ->
> example: mythfrontend runs on XDirectFB on Head 2 (TV-OUT) - then
> starting Live-TV -> TV-Out black -> Live-TV plays on my monitor.
> So thats my question -> How can i make mythfrontend to show the picture
> on Head 2? I hadn't found any information about that.
>
> I really hope you can help me, because i have the feeling i'm nearly
> before a nice mythtv-center using my existing hardware.
The directfb support for mythtv doesn't by default use the tv-out of
matrox cards.
I however managed to get a picture to TV (I have G400) with mythtv gui
through XDirectFB and video through mythtv's directfb support with the
attached patch (which is a hack), but the interlacing was lost and
movements weren't smooth.
I didn't quite like the GUI of mythtv either, so I gave up and installed
VDR instead.
--
Anssi Hannula
diff -Nurp mythtv-trunk-8387/libs/libmythtv/videoout_directfb.cpp mythtv-trunk-8387-fix/libs/libmythtv/videoout_directfb.cpp
--- mythtv-trunk-8387/libs/libmythtv/videoout_directfb.cpp 2005-12-20 08:51:06.000000000 -0500
+++ mythtv-trunk-8387-fix/libs/libmythtv/videoout_directfb.cpp 2005-12-26 19:35:59.000000000 -0500
@@ -369,12 +369,14 @@ bool VideoOutputDirectfb::Init(int width
//look up an output layer that supports the right format, begin with the video format we have as input, fall back to others
data->videoLayerConfig.flags = (DFBDisplayLayerConfigFlags)(DLCONF_WIDTH | DLCONF_HEIGHT | DLCONF_PIXELFORMAT);
- data->videoLayerConfig.width = width;
+ data->videoLayerConfig.width = 720; // hack
data->videoLayerConfig.height = height;
data->videoLayerConfig.pixelformat = DSPF_I420;
DFBCHECK(data->dfb->EnumDisplayLayers(data->dfb, LayerCallback, data));
-
+
+ VERBOSE(VB_GENERAL, "Layers enumerated, going forward");
+
if (data->videoLayer == NULL) {
data->videoLayerConfig.pixelformat = DSPF_YV12;
DFBCHECK(data->dfb->EnumDisplayLayers(data->dfb, LayerCallback, data));
@@ -407,8 +409,19 @@ bool VideoOutputDirectfb::Init(int width
}
}
- DFBCHECKFAIL(data->videoLayer->SetConfiguration(data->videoLayer, &(data->videoLayerConfig)), false);
+ VERBOSE(VB_GENERAL, QString("Trying to use these settings: DirectFB output : videoLayer : %1 : %2x%3, %4, %5 buffering")
+ .arg(data->videoLayerDesc.name)
+ .arg(data->videoLayerConfig.width)
+ .arg(data->videoLayerConfig.height)
+ .arg(data->videoLayerConfig.pixelformat == DSPF_I420 ? "I420 : Yuv" : "YV12 : Yvu")
+ .arg(
+ data->videoLayerConfig.buffermode == DLBM_TRIPLE ? "triple (video memory)" :
+ data->videoLayerConfig.buffermode == DLBM_BACKVIDEO ? "double (video memory)" :
+ "double (system memory)")
+ );
+ DFBCHECKFAIL(data->videoLayer->SetConfiguration(data->videoLayer, &(data->videoLayerConfig)), false);
+ DFBCHECKFAIL(data->videoLayer->SetFieldParity(data->videoLayer, 0), false);
VERBOSE(VB_GENERAL, QString("DirectFB output : videoLayer : %1 : %2x%3, %4, %5 buffering")
.arg(data->videoLayerDesc.name)
.arg(data->videoLayerConfig.width)
@@ -785,7 +798,24 @@ DFBEnumerationResult LayerCallback(unsig
struct DirectfbData *vodata = (DirectfbData*)data;
DFBResult ret;
//IDirectFBSurface *surface;
-
+
+ VERBOSE(VB_GENERAL, "=== WE ARE GOING TO LAYERCALLBACK");
+ VERBOSE(VB_GENERAL, "=== Checking for Matrox CRTC2 Layer");
+
+ if (!strcmp("Matrox CRTC2 Layer", desc.name )) {
+ VERBOSE(VB_GENERAL, " === Found CORRECT LAYER");
+ VERBOSE(VB_GENERAL, " === Calling GetDisplayLayer...");
+ if ((vodata->dfb->GetDisplayLayer(vodata->dfb, id, &(vodata->videoLayer))) == DFB_OK) {
+ VERBOSE(VB_GENERAL, " === DFB_OK, Cancelling Enumeration :)");
+ VERBOSE(VB_GENERAL, " === Testconfiguration skipped");
+ vodata->videoLayerDesc = desc;
+ return DFENUM_CANCEL;
+ }
+ VERBOSE(VB_GENERAL, " === FAILED!");
+ }
+ VERBOSE(VB_GENERAL, " === Not the right one, trying next...");
+ return DFENUM_OK;
+/*
if (id == DLID_PRIMARY)
return DFENUM_OK;
@@ -838,5 +868,5 @@ DFBEnumerationResult LayerCallback(unsig
else {
vodata->videoLayer->Release(vodata->videoLayer);
}
- return DFENUM_OK;
+ return DFENUM_OK;*/
}
_______________________________________________
mythtv-dev mailing list
[email protected]
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev