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 mythtv-dev@mythtv.org http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev