libxine-1.2 video_out_xvmc
Arvind R <[email protected]> Thu, 3 Jan 2013 01:25:13 +0530
| Newsgroups | gmane.comp.video.xine.devel |
|---|---|
| Message-ID | <CAA_L+UNoLr-GP4x_fJSaELakej2RnJCidJ5aTJBHOW_j8hKhMw@mail.gmail.com> |
Hi all,
I use a GeForce nVidia Card with nouveau driver. After seeing Mplayer
work with the libXvMC_nouveau driver (mesa-9.0.1), I tried xine. Ended
up locking up my screen. After using the foll. patch, I manage to get
a single frame display using XvMCsoftpipe, but when using XvMCnouveau,
I seem to see many continuous
video_out_xvmc: (xvmc_update_frame_format:770) xvmc_update_frame_format
messages.
Both crash, but I think there is a clue here. The softpipe being slow,
allows the frame_format to be updated; but the faster nouveau does not
- so a string of calls.
The patch gets execution past XvMCCreateSurface in xvmc_set_context;
and upto XvMCPutSurface in xvmc_display_frame (past the
XvMCSyncSurface.
Can anyone help? BTW, this patch, which basically executes
XvMCCreateSurface with the display locked, I think, is needed.
Arvind R.
diff -uprN a/src/video_out/video_out_xvmc.c b/src/video_out/video_out_xvmc.c
--- a/src/video_out/video_out_xvmc.c 2012-12-26 04:50:34 +0530
+++ b/src/video_out/video_out_xvmc.c 2013-01-02 23:18:14.000000000 +0530
@@ -646,17 +646,21 @@ static cxid_t *xvmc_set_context (xvmc_dr
this->context_id.xid = (void *)this->context.context_id;
+ lprintf (" Creating %d surfaces\n", this->num_frame_buffers);
for(i = 0; i < this->num_frame_buffers; i++) {
+ XLockDisplay(this->display);
result = XvMCCreateSurface(this->display, &this->context,
&this->frames[i]->surface);
+ XUnlockDisplay(this->display);
if(result != Success) {
- XvMCDestroyContext(this->display, &this->context);
- xprintf(this->xine, XINE_VERBOSITY_DEBUG, "set_context: couldn't
create XvMCSurfaces\n");
- this->context_id.xid = NULL;
- macroblocks->xine_mc.xvmc_accel = 0;
- _x_abort();
+ XLockDisplay(this->display);
+ XvMCDestroyContext(this->display, &this->context);
+ XUnlockDisplay(this->display);
+ xprintf(this->xine, XINE_VERBOSITY_DEBUG, "set_context:
couldn't create XvMCSurfaces\n");
+ this->context_id.xid = NULL;
+ macroblocks->xine_mc.xvmc_accel = 0;
+ _x_abort();
}
-
lprintf (" CreatedSurface %d
0x%lx\n",i,(long)&this->frames[i]->surface);
}
------------------------------------------------------------------------------
Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery
and much more. Keep your Java skills current with LearnJavaNow -
200+ hours of step-by-step video tutorials by Java experts.
SALE $49.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122612