diff options
Diffstat (limited to 'extra/ogle/xvideofix.patch')
-rw-r--r-- | extra/ogle/xvideofix.patch | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/extra/ogle/xvideofix.patch b/extra/ogle/xvideofix.patch deleted file mode 100644 index aafde447a..000000000 --- a/extra/ogle/xvideofix.patch +++ /dev/null @@ -1,205 +0,0 @@ ---- ogle-0.9.2/mpeg2_video/video_output_x11.c 2003-11-04 04:02:10.000000000 -0800 -+++ ogle-0.9.2-patch/mpeg2_video/video_output_x11.c 2005-04-22 18:37:56.000000000 -0700 -@@ -286,6 +286,7 @@ - } - } - -+ - /* This section of the code looks for the Xv extension for hardware - * yuv->rgb and scaling. If it is not found, or any suitable adapter - * is not found, use_xv will be set to 0. Otherwise it allocates a -@@ -299,121 +300,136 @@ - { - int xv_found = 0; - #ifdef HAVE_XV -- int i, j; -+ int i, j, k; - int result; - - xv_port = 0; /* We have no port yet. */ -- -+ - /* Check for the Xvideo extension */ -- result = XvQueryExtension(mydisplay, &xv_version, &xv_release, -- &xv_request_base, &xv_event_base, -+ result = XvQueryExtension(mydisplay, &xv_version, &xv_release, -+ &xv_request_base, &xv_event_base, - &xv_error_base); - if(result != Success) { - WARNING("%s", "Xvideo extension not found\n"); - use_xv = 0; - return; - } -- -+ - NOTE("Found Xv extension %d.%d, checking for suitable adaptors\n", - xv_version, xv_release); -- -+ - /* Check for available adaptors */ -- result = XvQueryAdaptors(mydisplay, DefaultRootWindow (mydisplay), -+ result = XvQueryAdaptors(mydisplay, DefaultRootWindow (mydisplay), - &xv_num_adaptors, &xv_adaptor_info); - if(result != Success) { - WARNING("%s", "No Xv adaptors found\n"); - use_xv = 0; - return; - } -- -+ - /* Check adaptors */ - for(i = 0; i < xv_num_adaptors; i++) { -- -+ - /* Is it usable for displaying XvImages */ - if(!(xv_adaptor_info[i].type & XvInputMask) || - !(xv_adaptor_info[i].type & XvImageMask)) - continue; -- -- xv_port = xv_adaptor_info[i].base_id; -- -- /* Check image formats of adaptor */ -- xv_formats = XvListImageFormats(mydisplay, xv_port, &xv_num_formats); -- for(j = 0; j < xv_num_formats; j++) { -- if(xv_formats[j].id == 0x32315659) { /* YV12 */ -- //if(xv_formats[j].id == 0x30323449) { /* I420 */ -- xv_id = xv_formats[j].id; -- break; -- } -- } -- /* No matching format found */ -- if(j == xv_num_formats) -- continue; -- -- NOTE("Xv adaptor \"%s\" port %li image format %i\n", -- xv_adaptor_info[i].name, xv_port, xv_id); -- -- /* Allocate XvImages */ -+ -+ /* Check Available Ports */ -+ for (j = 0; j < xv_adaptor_info[i].num_ports && !xv_port ; j++) { -+ -+ /* Check Image formats of adaptor */ -+ xv_formats = XvListImageFormats(mydisplay,xv_adaptor_info[i].base_id + j, &xv_num_formats); -+ for (k = 0; k < xv_num_formats; k ++) { -+ -+ /* Check for proper format (YV12) and see if we can grab the port */ -+ if ( (xv_formats[k].id == 0x32315659) && (XvGrabPort(mydisplay,xv_adaptor_info[i].base_id + j,0) == Success) ) { -+ xv_id = xv_formats[k].id; -+ xv_port = xv_adaptor_info[i].base_id + j; -+ break; -+ } -+ -+ } -+ -+ /* delete stuff nicely */ -+ XFree(xv_formats); -+ } -+ -+ /* Check next Adapter */ -+ if (xv_port==0) continue; -+ -+ /* Report what we found */ -+ NOTE("Xv adaptor \"%s\" port %li image format %i\n", xv_adaptor_info[i].name, xv_port, xv_id); -+ -+ /* Allocate XvImage */ - xv_image = XvShmCreateImage(mydisplay, xv_port, xv_id, NULL, - padded_width, -- padded_height, -+ padded_height, - &shm_info); -- -- /* Got an Image? */ -+ -+ /* Got an milk? */ - if(xv_image == NULL) - continue; -- -+ - /* Test and see if we really got padded_width x padded_height */ - if(xv_image->width != padded_width || - xv_image->height != padded_height) { - FATAL("XvShmCreateImage got size: %d x %d\n", - xv_image->width, xv_image->height); - exit(1); -- } -- -+ } -+ -+ /* Now Finish Up */ - shm_info.shmid = picture_buffer_shmid; - shm_info.shmaddr = picture_buffer_addr; -- -- /* Set the data pointer to the decoders picture segment. */ -+ -+ /* Set the data pointer to the decoders picture segment. */ - // xv_image->data = picture_data->y; - shm_info.readOnly = True; -- -+ - /* make sure we don't have any unhandled errors */ - XSync(mydisplay, False); -- -+ - /* set error handler so we can check if xshmattach failed */ - prev_xerrhandler = XSetErrorHandler(xshm_errorhandler); -- -+ - /* get the serial of the xshmattach request */ - req_serial = NextRequest(mydisplay); -- -+ - /* try to attach */ - XShmAttach(mydisplay, &shm_info); -- -+ - /* make sure xshmattach has been processed and any errors - have been returned to us */ - XSync(mydisplay, False); -- -+ - /* revert to the previous xerrorhandler */ - XSetErrorHandler(prev_xerrhandler); -- -+ - if(use_xshm) { - #if 0 - shmctl(shm_info.shmid, IPC_RMID, 0); // only works on Linux.. - #endif -- -+ - CompletionType = XShmGetEventBase(mydisplay) + ShmCompletion; - } - xv_found = 1; - - /* All set up! */ - break; -- } -+ } -+ -+ /* Clean up */ -+ XvFreeAdaptorInfo(xv_adaptor_info); -+ - #endif /* HAVE_XV */ -+ /* In case we didn't find a working Xv */ - if(!xv_found) { - use_xv = 0; -- } --} -- -+ } -+ -+ } -+ - - /* This section of the code tries to use the MIT XShm extension for - * accellerated transfers to to X. XShm extension is need and only -@@ -1726,6 +1742,8 @@ - - if(mydisplay) { - XSync(mydisplay,True); -+ if (use_xv) -+ XvUngrabPort(mydisplay,xv_port,CurrentTime); - if(use_xshm) - XShmDetach(mydisplay, &shm_info); - if(window.ximage != 0) |