diff options
Diffstat (limited to 'src/video_out/video_out_xxmc.c')
-rw-r--r-- | src/video_out/video_out_xxmc.c | 440 |
1 files changed, 220 insertions, 220 deletions
diff --git a/src/video_out/video_out_xxmc.c b/src/video_out/video_out_xxmc.c index 61e0139e3..256e2f5a8 100644 --- a/src/video_out/video_out_xxmc.c +++ b/src/video_out/video_out_xxmc.c @@ -4,7 +4,7 @@ * * This file is part of xine, a free video player. * - * xine is free software; you can redistribute it and/or modify it + * xine is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. @@ -40,7 +40,7 @@ static int gX11Fail; -static void xxmc_frame_updates(xxmc_driver_t *driver, xxmc_frame_t *frame, +static void xxmc_frame_updates(xxmc_driver_t *driver, xxmc_frame_t *frame, int init_macroblocks); static void dispose_ximage (xxmc_driver_t *this, XShmSegmentInfo *shminfo, XvImage *myimage); @@ -69,7 +69,7 @@ static const unsigned int accel_priority[] = { * Additional thread safety, since the plugin may decide to destroy a context * while it's surfaces are still active in the video-out loop. * When / If XvMC libs are reasonably thread-safe, the locks can be made - * more efficient by allowing multiple threads in that do not destroy + * more efficient by allowing multiple threads in that do not destroy * the context or surfaces that may be active in other threads. */ @@ -92,7 +92,7 @@ void xvmc_context_reader_lock(context_lock_t *c) #ifdef XVMC_THREAD_SAFE c->num_readers++; pthread_mutex_unlock(&c->mutex); -#endif +#endif } void xvmc_context_reader_unlock(context_lock_t *c) @@ -103,9 +103,9 @@ void xvmc_context_reader_unlock(context_lock_t *c) if (--(c->num_readers) == 0) { pthread_cond_broadcast(&c->cond); } - } + } #endif - pthread_mutex_unlock(&c->mutex); + pthread_mutex_unlock(&c->mutex); } static void xvmc_context_writer_lock(context_lock_t *c) @@ -115,7 +115,7 @@ static void xvmc_context_writer_lock(context_lock_t *c) while(c->num_readers) { pthread_cond_wait(&c->cond, &c->mutex); } -#endif +#endif } static void xvmc_context_writer_unlock(context_lock_t *c) @@ -131,34 +131,34 @@ static void xvmc_context_writer_unlock(context_lock_t *c) -static void xxmc_xvmc_dump_surfaces(xxmc_driver_t *this ) +static void xxmc_xvmc_dump_surfaces(xxmc_driver_t *this ) { int i; xvmc_surface_handler_t *handler = &this->xvmc_surf_handler; for (i=0; i<XVMC_MAX_SURFACES; ++i) { - xprintf(this->xine, XINE_VERBOSITY_DEBUG, "%d %d;",handler->surfInUse[i], + xprintf(this->xine, XINE_VERBOSITY_DEBUG, "%d %d;",handler->surfInUse[i], handler->surfValid[i]); } - xprintf(this->xine, XINE_VERBOSITY_DEBUG, "\n"); + xprintf(this->xine, XINE_VERBOSITY_DEBUG, "\n"); } -static void xxmc_xvmc_dump_subpictures(xxmc_driver_t *this) +static void xxmc_xvmc_dump_subpictures(xxmc_driver_t *this) { int i; xvmc_surface_handler_t *handler = &this->xvmc_surf_handler; for (i=0; i<XVMC_MAX_SUBPICTURES; ++i) { - xprintf(this->xine, XINE_VERBOSITY_DEBUG, "%d %d;",handler->subInUse[i], + xprintf(this->xine, XINE_VERBOSITY_DEBUG, "%d %d;",handler->subInUse[i], handler->subValid[i]); } - xprintf(this->xine, XINE_VERBOSITY_DEBUG, "\n"); + xprintf(this->xine, XINE_VERBOSITY_DEBUG, "\n"); } -static void xxmc_xvmc_surface_handler_construct(xxmc_driver_t *this) +static void xxmc_xvmc_surface_handler_construct(xxmc_driver_t *this) { xvmc_surface_handler_t *handler = &this->xvmc_surf_handler; @@ -208,11 +208,11 @@ static void xxmc_xvmc_destroy_subpictures(xxmc_driver_t *this) } pthread_mutex_unlock(&handler->mutex); } - -static XvMCSurface *xxmc_xvmc_alloc_surface(xxmc_driver_t *this, + +static XvMCSurface *xxmc_xvmc_alloc_surface(xxmc_driver_t *this, XvMCContext *context) { - xvmc_surface_handler_t *handler = &this->xvmc_surf_handler; + xvmc_surface_handler_t *handler = &this->xvmc_surf_handler; int i; pthread_mutex_lock(&handler->mutex); @@ -228,7 +228,7 @@ static XvMCSurface *xxmc_xvmc_alloc_surface(xxmc_driver_t *this, for (i=0; i<XVMC_MAX_SURFACES; ++i) { if (!handler->surfInUse[i]) { XVMCLOCKDISPLAY( this->display ); - if (Success != XvMCCreateSurface( this->display, context, + if (Success != XvMCCreateSurface( this->display, context, handler->surfaces + i)) { XVMCUNLOCKDISPLAY( this->display ); pthread_mutex_unlock(&handler->mutex); @@ -247,13 +247,13 @@ static XvMCSurface *xxmc_xvmc_alloc_surface(xxmc_driver_t *this, return NULL; } -static void xxmc_xvmc_free_surface(xxmc_driver_t *this, XvMCSurface *surf) +static void xxmc_xvmc_free_surface(xxmc_driver_t *this, XvMCSurface *surf) { xvmc_surface_handler_t *handler = &this->xvmc_surf_handler; unsigned index = surf - handler->surfaces; - if (index >= XVMC_MAX_SURFACES) return; + if (index >= XVMC_MAX_SURFACES) return; pthread_mutex_lock(&handler->mutex); xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_xxmc: Disposing of surface %d\n",index); @@ -277,7 +277,7 @@ int xxmc_xvmc_surface_valid(xxmc_driver_t *this, XvMCSurface *surf) } static XvMCSubpicture *xxmc_xvmc_alloc_subpicture - (xxmc_driver_t *this, + (xxmc_driver_t *this, XvMCContext *context, unsigned short width, unsigned short height, int xvimage_id) { @@ -290,7 +290,7 @@ static XvMCSubpicture *xxmc_xvmc_alloc_subpicture for (i=0; i<XVMC_MAX_SUBPICTURES; ++i) { if (handler->subValid[i] && !handler->subInUse[i]) { XVMCLOCKDISPLAY( this->display ); - if (XvMCGetSubpictureStatus( this->display, handler->subpictures + i, + if (XvMCGetSubpictureStatus( this->display, handler->subpictures + i, &status)) { XVMCUNLOCKDISPLAY( this->display ); continue; @@ -307,7 +307,7 @@ static XvMCSubpicture *xxmc_xvmc_alloc_subpicture for (i=0; i<XVMC_MAX_SUBPICTURES; ++i) { if (!handler->subInUse[i]) { XVMCLOCKDISPLAY( this->display ); - if (Success != XvMCCreateSubpicture( this->display, context, + if (Success != XvMCCreateSubpicture( this->display, context, handler->subpictures + i, width, height, xvimage_id)) { XVMCUNLOCKDISPLAY( this->display ); @@ -327,14 +327,14 @@ static XvMCSubpicture *xxmc_xvmc_alloc_subpicture return NULL; } -static void xxmc_xvmc_free_subpicture(xxmc_driver_t *this, XvMCSubpicture *sub) +static void xxmc_xvmc_free_subpicture(xxmc_driver_t *this, XvMCSubpicture *sub) { xvmc_surface_handler_t *handler = &this->xvmc_surf_handler; unsigned index = sub - handler->subpictures; - if (index >= XVMC_MAX_SUBPICTURES) return; + if (index >= XVMC_MAX_SUBPICTURES) return; pthread_mutex_lock(&handler->mutex); xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_xxmc: Disposing of subpicture %d\n",index); @@ -346,7 +346,7 @@ static void xxmc_xvmc_free_subpicture(xxmc_driver_t *this, XvMCSubpicture *sub) /* * Callback used by decoder to check that surfaces are still valid, - * and to lock the context so that it won't get destroyed during + * and to lock the context so that it won't get destroyed during * decoding. */ @@ -356,9 +356,9 @@ static int xxmc_lock_and_validate_surfaces(vo_frame_t *cur_frame, vo_frame_t *bw_frame, unsigned pc_type) { - xxmc_driver_t + xxmc_driver_t *driver = (xxmc_driver_t *) cur_frame->driver; - xxmc_frame_t + xxmc_frame_t *frame; xvmc_context_reader_lock( &driver->xvmc_lock ); @@ -377,7 +377,7 @@ static int xxmc_lock_and_validate_surfaces(vo_frame_t *cur_frame, if (!xxmc_xvmc_surface_valid( driver, frame->xvmc_surf)) break; return 0; } - + xvmc_context_reader_unlock( &driver->xvmc_lock ); return -1; } @@ -388,19 +388,19 @@ static int xxmc_lock_and_validate_surfaces(vo_frame_t *cur_frame, static void xxmc_unlock_surfaces(vo_driver_t *this_gen) { - xxmc_driver_t + xxmc_driver_t *driver = (xxmc_driver_t *) this_gen; - + xvmc_context_reader_unlock( &driver->xvmc_lock ); } /* - * Callback for decoder. - * Check that the surface is vaid and + * Callback for decoder. + * Check that the surface is vaid and * flush outstanding rendering requests on this surface. */ -static void xvmc_flush(vo_frame_t *this_gen) +static void xvmc_flush(vo_frame_t *this_gen) { xxmc_frame_t @@ -412,7 +412,7 @@ static void xvmc_flush(vo_frame_t *this_gen) if ( ! xxmc_xvmc_surface_valid( driver, frame->xvmc_surf)) { frame->xxmc_data.result = 128; - xvmc_context_reader_unlock( &driver->xvmc_lock ); + xvmc_context_reader_unlock( &driver->xvmc_lock ); return; } @@ -432,10 +432,10 @@ static void xvmc_flush(vo_frame_t *this_gen) * using a call to XvMCBlendSubpicture2 with a blank subpicture. */ -static void xxmc_duplicate_frame_data(vo_frame_t *this_gen, - vo_frame_t *original) +static void xxmc_duplicate_frame_data(vo_frame_t *this_gen, + vo_frame_t *original) { - xxmc_frame_t *this = (xxmc_frame_t *) this_gen, + xxmc_frame_t *this = (xxmc_frame_t *) this_gen, *orig = (xxmc_frame_t *) original; xxmc_driver_t *driver = (xxmc_driver_t *) this_gen->driver; xine_t *xine = driver->xine; @@ -450,25 +450,25 @@ static void xxmc_duplicate_frame_data(vo_frame_t *this_gen, if (!xxmc_xvmc_surface_valid(driver,orig->xvmc_surf)) { xvmc_context_writer_unlock( &driver->xvmc_lock ); return; - } + } this->xxmc_data = *xxmc; this->width = original->width; this->height = original->height; this->format = original->format; this->ratio = original->ratio; - - xxmc_frame_updates(driver,this,0); + + xxmc_frame_updates(driver,this,0); /* - * Allocate a dummy subpicture and copy using - * XvMCBlendsubpicture2. VLD implementations can do blending with a + * Allocate a dummy subpicture and copy using + * XvMCBlendsubpicture2. VLD implementations can do blending with a * NULL subpicture. Use that if possible. */ need_dummy = (xxmc->acceleration != XINE_XVMC_ACCEL_VLD); tmp = NULL; if (need_dummy) { - tmp = xxmc_xvmc_alloc_subpicture( driver, &driver->context, + tmp = xxmc_xvmc_alloc_subpicture( driver, &driver->context, this->width, this->height, driver->xvmc_cap [driver->xvmc_cur_cap].subPicType.id); @@ -477,20 +477,20 @@ static void xxmc_duplicate_frame_data(vo_frame_t *this_gen, XVMCLOCKDISPLAY( driver->display ); if (tmp) XvMCClearSubpicture(driver->display, tmp , 0,0, this->width, this->height, 0); - if (Success == XvMCBlendSubpicture2( driver->display, orig->xvmc_surf, + if (Success == XvMCBlendSubpicture2( driver->display, orig->xvmc_surf, this->xvmc_surf, tmp, - 0,0,this->width, this->height, + 0,0,this->width, this->height, 0,0,this->width, this->height)) { this->xxmc_data.decoded = 1; } XVMCUNLOCKDISPLAY( driver->display ); if (tmp) xxmc_xvmc_free_subpicture( driver, tmp); } - + xvmc_context_writer_unlock( &driver->xvmc_lock ); xprintf(xine, XINE_VERBOSITY_DEBUG, "Duplicated XvMC frame %d %d.\n", this->width,this->height); -} +} static uint32_t xxmc_get_capabilities (vo_driver_t *this_gen) { xxmc_driver_t *this = (xxmc_driver_t *) this_gen; @@ -499,7 +499,7 @@ static uint32_t xxmc_get_capabilities (vo_driver_t *this_gen) { } -static void xxmc_frame_field (vo_frame_t *vo_img, int which_field) +static void xxmc_frame_field (vo_frame_t *vo_img, int which_field) { lprintf ("xvmc_frame_field\n"); } @@ -544,13 +544,13 @@ static void xxmc_frame_dispose (vo_frame_t *vo_img) { */ static vo_frame_t *xxmc_alloc_frame (vo_driver_t *this_gen) { - xxmc_driver_t *this = (xxmc_driver_t *) this_gen; + xxmc_driver_t *this = (xxmc_driver_t *) this_gen; xxmc_frame_t *frame ; frame = calloc(1, sizeof (xxmc_frame_t)); if (!frame) return NULL; - + pthread_mutex_init (&frame->vo_frame.mutex, NULL); frame->xvmc_surf = NULL; @@ -575,7 +575,7 @@ static vo_frame_t *xxmc_alloc_frame (vo_driver_t *this_gen) { static int HandleXError (Display *display, XErrorEvent *xevent) { char str [1024]; - + XGetErrorText (display, xevent->error_code, str, 1024); printf ("received X error event: %s\n", str); gX11Fail = 1; @@ -607,7 +607,7 @@ static XvImage *create_ximage (xxmc_driver_t *this, XShmSegmentInfo *shminfo, } switch (format) { - case XINE_IMGFMT_YV12: + case XINE_IMGFMT_YV12: xv_format = this->xv_format_yv12; break; case XINE_IMGFMT_YUY2: @@ -753,7 +753,7 @@ static void xxmc_dispose_context(xxmc_driver_t *driver) XvMCDestroyMacroBlocks( driver->display, ¯oblocks->macro_blocks ); XvMCDestroyBlocks( driver->display , ¯oblocks->blocks ); } - + xprintf(driver->xine, XINE_VERBOSITY_LOG, "video_out_xxmc: Freeing up XvMC Surfaces and subpictures.\n"); if (driver->xvmc_palette) free(driver->xvmc_palette); @@ -763,15 +763,15 @@ static void xxmc_dispose_context(xxmc_driver_t *driver) xprintf(driver->xine, XINE_VERBOSITY_LOG, "video_out_xxmc: Freeing up XvMC Context.\n"); XLockDisplay (driver->display); - if (driver->subImage) - dispose_ximage(driver, &driver->subShmInfo, driver->subImage); + if (driver->subImage) + dispose_ximage(driver, &driver->subShmInfo, driver->subImage); driver->subImage = NULL; XUnlockDisplay (driver->display); XVMCLOCKDISPLAY( driver->display ); XvMCDestroyContext( driver->display, &driver->context); XVMCUNLOCKDISPLAY( driver->display ); driver->contextActive = 0; - driver->hwSubpictures = 0; + driver->hwSubpictures = 0; driver->xvmc_accel = 0; } } @@ -779,7 +779,7 @@ static void xxmc_dispose_context(xxmc_driver_t *driver) /* * Find a suitable XvMC Context according to the acceleration request * passed to us in the xxmc variable, and to the acceleration type - * priority set up in this plugin. Result is returned in + * priority set up in this plugin. Result is returned in * driver->xvmc_cur_cap. */ @@ -793,7 +793,7 @@ static int xxmc_find_context(xxmc_driver_t *driver, xine_xxmc_t *xxmc, request_mpeg_flags = xxmc->mpeg; found = 0; curCap = NULL; - + for (k = 0; k < NUM_ACCEL_PRIORITY; ++k) { request_accel_flags = xxmc->acceleration & accel_priority[k]; if (!request_accel_flags) continue; @@ -827,7 +827,7 @@ static int xxmc_find_context(xxmc_driver_t *driver, xine_xxmc_t *xxmc, } driver->xvmc_accel = 0; return 0; -} +} static int xxmc_create_context(xxmc_driver_t *driver, unsigned width, unsigned height) { @@ -837,9 +837,9 @@ static int xxmc_create_context(xxmc_driver_t *driver, unsigned width, unsigned h xprintf(driver->xine, XINE_VERBOSITY_LOG, "video_out_xxmc: Creating new XvMC Context %d\n",curCap->type_id); XVMCLOCKDISPLAY( driver->display ); - if (Success == XvMCCreateContext( driver->display, driver->xv_port, + if (Success == XvMCCreateContext( driver->display, driver->xv_port, curCap->type_id, width, - height, driver->context_flags, + height, driver->context_flags, &driver->context)) { driver->xvmc_mpeg = curCap->mpeg_flags; driver->xvmc_width = width; @@ -860,26 +860,26 @@ static void xxmc_setup_subpictures(xxmc_driver_t *driver, unsigned width, unsign /* * Determine if we can use hardware subpictures, and in that case, set up an * XvImage that we can use for blending. - */ + */ curCap = driver->xvmc_cap + driver->xvmc_cur_cap; - if ((width > curCap->sub_max_width) || + if ((width > curCap->sub_max_width) || (height > curCap->sub_max_height)) return; - if ((driver->xvmc_backend_subpic = (curCap->flags & XVMC_BACKEND_SUBPICTURE))) + if ((driver->xvmc_backend_subpic = (curCap->flags & XVMC_BACKEND_SUBPICTURE))) xprintf(driver->xine, XINE_VERBOSITY_LOG, "video_out_xxmc: Using Backend subpictures.\n"); - + if (!driver->subImage) { /* * Note: If other image formats than xx44 are to be used here, they must be - * translated to XINE_IMGFMT_XXX, since that is what create_ximage + * translated to XINE_IMGFMT_XXX, since that is what create_ximage * expects. */ XLockDisplay (driver->display); - driver->subImage = + driver->subImage = create_ximage(driver, &driver->subShmInfo, width, height, curCap->subPicType.id); XUnlockDisplay (driver->display); if (NULL == driver->subImage) { @@ -889,15 +889,15 @@ static void xxmc_setup_subpictures(xxmc_driver_t *driver, unsigned width, unsign } } - sp = xxmc_xvmc_alloc_subpicture( driver, &driver->context, width, + sp = xxmc_xvmc_alloc_subpicture( driver, &driver->context, width, height, curCap->subPicType.id); if (sp == NULL) return; _x_init_xx44_palette( &driver->palette, sp->num_palette_entries); - driver->xvmc_palette = (char *) xine_xmalloc(sp->num_palette_entries + driver->xvmc_palette = (char *) xine_xmalloc(sp->num_palette_entries * sp->entry_bytes); xxmc_xvmc_free_subpicture( driver, sp); - if (driver->xvmc_palette == NULL) return; + if (driver->xvmc_palette == NULL) return; driver->hwSubpictures = 1; } } @@ -927,8 +927,8 @@ static int xxmc_mocomp_create_macroblocks(xxmc_driver_t *driver, xxmc->xvmc.macroblocks = (xine_macroblocks_t *)macroblocks; return 1; -} - +} + static void xvmc_check_colorkey_properties(xxmc_driver_t *driver) { int num,i; @@ -943,7 +943,7 @@ static void xvmc_check_colorkey_properties(xxmc_driver_t *driver) driver->have_xvmc_autopaint = 0; if (driver->context_flags & XVMC_OVERLAID_SURFACE) { XVMCLOCKDISPLAY( driver->display ); - xvmc_attributes = XvMCQueryAttributes( driver->display, + xvmc_attributes = XvMCQueryAttributes( driver->display, &driver->context, &num); if (xvmc_attributes) { @@ -953,7 +953,7 @@ static void xvmc_check_colorkey_properties(xxmc_driver_t *driver) XvMCSetAttribute(driver->display, &driver->context,ap, driver->props[VO_PROP_AUTOPAINT_COLORKEY].value); driver->have_xvmc_autopaint = 1; - } + } } } XFree(xvmc_attributes); @@ -966,16 +966,16 @@ static void xvmc_check_colorkey_properties(xxmc_driver_t *driver) static int xxmc_xvmc_update_context(xxmc_driver_t *driver, xxmc_frame_t *frame, - uint32_t width, uint32_t height, int frame_format_xxmc) + uint32_t width, uint32_t height, int frame_format_xxmc) { xine_xxmc_t *xxmc = &frame->xxmc_data; /* * Are we at all capable of doing XvMC ? - */ + */ - - if (driver->xvmc_cap == 0) + + if (driver->xvmc_cap == 0) return 0; xprintf(driver->xine, XINE_VERBOSITY_LOG, @@ -986,18 +986,18 @@ static int xxmc_xvmc_update_context(xxmc_driver_t *driver, xxmc_frame_t *frame, " mpeg: %d acceleration: %d", xxmc->mpeg, xxmc->acceleration); } xprintf(driver->xine, XINE_VERBOSITY_LOG, "\n"); - + if (frame->xvmc_surf) xxmc_xvmc_free_surface( driver , frame->xvmc_surf); frame->xvmc_surf = NULL; xxmc_dispose_context( driver ); - + if (frame_format_xxmc && xxmc_find_context( driver, xxmc, width, height )) { xxmc_create_context( driver, width, height); xvmc_check_colorkey_properties( driver ); xxmc_setup_subpictures(driver, width, height); - if ((driver->xvmc_accel & + if ((driver->xvmc_accel & (XINE_XVMC_ACCEL_MOCOMP | XINE_XVMC_ACCEL_IDCT))) { if (!xxmc_mocomp_create_macroblocks(driver, frame, 1)) { lprintf("video_out_xxmc: ERROR: Macroblock allocation failed\n"); @@ -1012,15 +1012,15 @@ static int xxmc_xvmc_update_context(xxmc_driver_t *driver, xxmc_frame_t *frame, } else { printf("video_out_xxmc: Using hardware decoding for this stream.\n"); } - + driver->xvmc_mpeg = xxmc->mpeg; driver->xvmc_width = width; driver->xvmc_height = height; return driver->contextActive; } -static void xxmc_frame_updates(xxmc_driver_t *driver, - xxmc_frame_t *frame, +static void xxmc_frame_updates(xxmc_driver_t *driver, + xxmc_frame_t *frame, int init_macroblocks) { xine_xxmc_t *xxmc = &frame->xxmc_data; @@ -1041,10 +1041,10 @@ static void xxmc_frame_updates(xxmc_driver_t *driver, /* * If it is NULL create a new surface. - */ + */ if (frame->xvmc_surf == NULL) { - if (NULL == (frame->xvmc_surf = + if (NULL == (frame->xvmc_surf = xxmc_xvmc_alloc_surface( driver, &driver->context))) { fprintf(stderr, "video_out_xxmc: ERROR: Accelerated surface allocation failed.\n" "video_out_xxmc: You are probably out of framebuffer memory.\n" @@ -1052,7 +1052,7 @@ static void xxmc_frame_updates(xxmc_driver_t *driver, driver->xvmc_accel = 0; xxmc_dispose_context( driver ); return; - } + } xxmc->xvmc.macroblocks = (xine_macroblocks_t *) &driver->macroblocks; xxmc->xvmc.macroblocks->xvmc_accel = (driver->unsigned_intra) ? 0 : XINE_VO_SIGNED_INTRA; @@ -1071,7 +1071,7 @@ static void xxmc_frame_updates(xxmc_driver_t *driver, xxmc->proc_xxmc_flush = xvmc_flush; xxmc->proc_xxmc_lock_valid = xxmc_lock_and_validate_surfaces; xxmc->proc_xxmc_unlock = xxmc_unlock_surfaces; - + xxmc->xvmc.proc_macro_block = xxmc_xvmc_proc_macro_block; frame->vo_frame.proc_duplicate_frame_data = xxmc_duplicate_frame_data; #ifdef HAVE_VLDXVMC @@ -1083,7 +1083,7 @@ static void xxmc_frame_updates(xxmc_driver_t *driver, if (init_macroblocks) { driver->macroblocks.num_blocks = 0; driver->macroblocks.macroblockptr = driver->macroblocks.macroblockbaseptr; - driver->macroblocks.xine_mc.blockptr = + driver->macroblocks.xine_mc.blockptr = driver->macroblocks.xine_mc.blockbaseptr; } xxmc->acceleration = driver->xvmc_accel; @@ -1105,7 +1105,7 @@ static void dispose_ximage (xxmc_driver_t *this, shminfo->shmid = -1; } - } + } else { if (myimage->data) free(myimage->data); XFree (myimage); @@ -1125,29 +1125,29 @@ static void xxmc_do_update_frame_xv(vo_driver_t *this_gen, if (this->use_pitch_alignment) { width = (width + 7) & ~0x7; } - + if ((frame->width != width) || (frame->height != height) || (frame->last_sw_format != format)) { - + frame->last_sw_format = format; XLockDisplay (this->display); - + /* * (re-) allocate xvimage */ - + if (frame->image) { dispose_ximage (this, &frame->shminfo, frame->image); frame->image = NULL; } - + frame->image = create_ximage (this, &frame->shminfo, width, height, format); - + if(format == XINE_IMGFMT_YUY2) { frame->vo_frame.pitches[0] = frame->image->pitches[0]; frame->vo_frame.base[0] = frame->image->data + frame->image->offsets[0]; - } + } else { frame->vo_frame.pitches[0] = frame->image->pitches[0]; frame->vo_frame.pitches[1] = frame->image->pitches[2]; @@ -1156,14 +1156,14 @@ static void xxmc_do_update_frame_xv(vo_driver_t *this_gen, frame->vo_frame.base[1] = frame->image->data + frame->image->offsets[2]; frame->vo_frame.base[2] = frame->image->data + frame->image->offsets[1]; } - + XUnlockDisplay (this->display); } frame->ratio = ratio; frame->width = width; frame->height = height; - frame->format = format; + frame->format = format; frame->vo_frame.format = frame->format; } @@ -1180,7 +1180,7 @@ static int xxmc_accel_update(xxmc_driver_t *driver, /* * Same acceleration request. No need to change. - */ + */ if (last_request == new_request) return 0; @@ -1199,7 +1199,7 @@ static int xxmc_accel_update(xxmc_driver_t *driver, if (new_request & accel_priority[k]) return 1; } - /* + /* * Should never get here. */ @@ -1229,10 +1229,10 @@ static void xxmc_do_update_frame(vo_driver_t *this_gen, this->last_accel_request = xxmc->acceleration; } - if (this->contextActive) + if (this->contextActive) xxmc_frame_updates(this, frame, 1); - xxmc_do_update_frame_xv(this_gen, frame_gen, width, height, ratio, + xxmc_do_update_frame_xv(this_gen, frame_gen, width, height, ratio, xxmc->fallback_format, flags); if (!this->contextActive) { @@ -1245,7 +1245,7 @@ static void xxmc_do_update_frame(vo_driver_t *this_gen, } xvmc_context_writer_unlock( &this->xvmc_lock); - + } else { /* switch back to an unaccelerated context */ if (this->last_accel_request != 0xFFFFFFFF) { @@ -1253,7 +1253,7 @@ static void xxmc_do_update_frame(vo_driver_t *this_gen, xxmc_xvmc_update_context(this, frame, width, height, 0); } frame->vo_frame.proc_duplicate_frame_data = NULL; - xxmc_do_update_frame_xv(this_gen, frame_gen, width, height, ratio, + xxmc_do_update_frame_xv(this_gen, frame_gen, width, height, ratio, format, flags); } } @@ -1261,7 +1261,7 @@ static void xxmc_do_update_frame(vo_driver_t *this_gen, static void xxmc_update_frame_format(vo_driver_t *this_gen, vo_frame_t *frame_gen, uint32_t width, uint32_t height, - double ratio, int format, int flags) + double ratio, int format, int flags) { if (format != XINE_IMGFMT_XXMC) { @@ -1279,7 +1279,7 @@ static void xxmc_update_frame_format(vo_driver_t *this_gen, xine_xxmc_t *xxmc = (xine_xxmc_t *)frame_gen->accel_data; xxmc->decoded = 0; xxmc->proc_xxmc_update_frame = xxmc_do_update_frame; - frame_gen->proc_duplicate_frame_data = xxmc_duplicate_frame_data; + frame_gen->proc_duplicate_frame_data = xxmc_duplicate_frame_data; } } @@ -1301,16 +1301,16 @@ static int xxmc_clean_output_area (xxmc_driver_t *this, int xvmc_active) { this->sc.border[i].w, this->sc.border[i].h); } } - + /* * XvMC does not support autopainting regardless of whether there's an - * Xv attribute for it. However, if there is an XvMC attribute for - * autopainting, we should be able to assume it is supported. + * Xv attribute for it. However, if there is an XvMC attribute for + * autopainting, we should be able to assume it is supported. * That support is checked whenever a context is changed. */ - autopainting = (this->props[VO_PROP_AUTOPAINT_COLORKEY].value == 1); - if ((xvmc_active && + autopainting = (this->props[VO_PROP_AUTOPAINT_COLORKEY].value == 1); + if ((xvmc_active && (this->context_flags & XVMC_OVERLAID_SURFACE) && (! this->have_xvmc_autopaint || ! autopainting)) || @@ -1323,12 +1323,12 @@ static int xxmc_clean_output_area (xxmc_driver_t *this, int xvmc_active) { } else { ret = 0; } - + if (this->xoverlay) { x11osd_resize (this->xoverlay, this->sc.gui_width, this->sc.gui_height); this->ovl_changed = 1; } - + XUnlockDisplay (this->display); return ret; } @@ -1354,11 +1354,11 @@ static void xxmc_compute_output_size (xxmc_driver_t *this) { } -static void xxmc_check_xoverlay_type(xxmc_driver_t *driver, xxmc_frame_t *frame) +static void xxmc_check_xoverlay_type(xxmc_driver_t *driver, xxmc_frame_t *frame) { int - new_overlay_type = (frame->format == XINE_IMGFMT_XXMC) ? + new_overlay_type = (frame->format == XINE_IMGFMT_XXMC) ? driver->xvmc_xoverlay_type : driver->xv_xoverlay_type; if (driver->xoverlay_type != new_overlay_type) { printf("Warning! Changing xoverlay\n"); @@ -1371,40 +1371,40 @@ static void xxmc_check_xoverlay_type(xxmc_driver_t *driver, xxmc_frame_t *frame) } -static void xxmc_overlay_begin (vo_driver_t *this_gen, +static void xxmc_overlay_begin (vo_driver_t *this_gen, vo_frame_t *frame_gen, int changed) { xxmc_driver_t *this = (xxmc_driver_t *) this_gen; xxmc_frame_t *frame = (xxmc_frame_t *) frame_gen; this->ovl_changed += changed; - + xvmc_context_reader_lock( &this->xvmc_lock ); - if ((frame->format == XINE_IMGFMT_XXMC) && + if ((frame->format == XINE_IMGFMT_XXMC) && !xxmc_xvmc_surface_valid(this, frame->xvmc_surf)) { xvmc_context_reader_unlock( &this->xvmc_lock ); return; } if( this->ovl_changed && this->xoverlay ) { - + XLockDisplay (this->display); xxmc_check_xoverlay_type(this, frame); - x11osd_clear(this->xoverlay); + x11osd_clear(this->xoverlay); XUnlockDisplay (this->display); - } - if (this->ovl_changed && (frame->format == XINE_IMGFMT_XXMC) && + } + if (this->ovl_changed && (frame->format == XINE_IMGFMT_XXMC) && this->hwSubpictures ) { this->new_subpic = xxmc_xvmc_alloc_subpicture - ( this, &this->context, this->xvmc_width, - this->xvmc_height, + ( this, &this->context, this->xvmc_width, + this->xvmc_height, this->xvmc_cap[this->xvmc_cur_cap].subPicType.id); if (this->new_subpic) { this->first_overlay = 1; XVMCLOCKDISPLAY( this->display ); - XvMCClearSubpicture(this->display, this->new_subpic, 0,0, + XvMCClearSubpicture(this->display, this->new_subpic, 0,0, this->xvmc_width, this->xvmc_height, 0x00); XVMCUNLOCKDISPLAY( this->display ); @@ -1412,22 +1412,22 @@ static void xxmc_overlay_begin (vo_driver_t *this_gen, } } xvmc_context_reader_unlock( &this->xvmc_lock ); - + this->alphablend_extra_data.offset_x = frame_gen->overlay_offset_x; this->alphablend_extra_data.offset_y = frame_gen->overlay_offset_y; } -static void xxmc_overlay_end (vo_driver_t *this_gen, vo_frame_t *vo_img) +static void xxmc_overlay_end (vo_driver_t *this_gen, vo_frame_t *vo_img) { xxmc_driver_t *this = (xxmc_driver_t *) this_gen; xxmc_frame_t *frame = (xxmc_frame_t *) vo_img; - + if( this->ovl_changed && this->xoverlay ) { XLockDisplay (this->display); x11osd_expose(this->xoverlay); XUnlockDisplay (this->display); - } + } if ((frame->format == XINE_IMGFMT_XXMC) && this->hwSubpictures) { LOCK_AND_SURFACE_VALID( this, frame->xvmc_surf ); if (this->ovl_changed) { @@ -1444,7 +1444,7 @@ static void xxmc_overlay_end (vo_driver_t *this_gen, vo_frame_t *vo_img) this->reverse_nvidia_palette ? "YVU" : this->old_subpic->component_order); XVMCLOCKDISPLAY( this->display ); - XvMCSetSubpicturePalette( this->display, this->old_subpic, + XvMCSetSubpicturePalette( this->display, this->old_subpic, this->xvmc_palette); XvMCFlushSubpicture( this->display , this->old_subpic); XvMCSyncSubpicture( this->display, this->old_subpic ); @@ -1455,14 +1455,14 @@ static void xxmc_overlay_end (vo_driver_t *this_gen, vo_frame_t *vo_img) XVMCLOCKDISPLAY( this->display ); if (this->xvmc_backend_subpic ) { XvMCBlendSubpicture( this->display, frame->xvmc_surf, - this->old_subpic,0,0,this->xvmc_width, + this->old_subpic,0,0,this->xvmc_width, this->xvmc_height, 0, 0, this->xvmc_width, this->xvmc_height ); } else { - XvMCBlendSubpicture2( this->display, frame->xvmc_surf, + XvMCBlendSubpicture2( this->display, frame->xvmc_surf, frame->xvmc_surf, - this->old_subpic, 0,0,this->xvmc_width, - this->xvmc_height,0,0,this->xvmc_width, + this->old_subpic, 0,0,this->xvmc_width, + this->xvmc_height,0,0,this->xvmc_width, this->xvmc_height); } XVMCUNLOCKDISPLAY( this->display ); @@ -1473,8 +1473,8 @@ static void xxmc_overlay_end (vo_driver_t *this_gen, vo_frame_t *vo_img) } -static void xxmc_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, - vo_overlay_t *overlay) +static void xxmc_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, + vo_overlay_t *overlay) { xxmc_driver_t *this = (xxmc_driver_t *) this_gen; xxmc_frame_t *frame = (xxmc_frame_t *) frame_gen; @@ -1484,7 +1484,7 @@ static void xxmc_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, if( overlay->unscaled ) { if( this->ovl_changed && this->xoverlay ) { XLockDisplay (this->display); - x11osd_blend(this->xoverlay, overlay); + x11osd_blend(this->xoverlay, overlay); XUnlockDisplay (this->display); } } else if (frame->format == XINE_IMGFMT_XXMC) { @@ -1497,7 +1497,7 @@ static void xxmc_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, this->subImage->height); this->first_overlay = 0; } - _x_blend_xx44(this->subImage->data, overlay, this->subImage->width, + _x_blend_xx44(this->subImage->data, overlay, this->subImage->width, this->subImage->height, this->subImage->width, &this->alphablend_extra_data, &this->palette, (this->subImage->id == FOURCC_IA44)); @@ -1509,7 +1509,7 @@ static void xxmc_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, y1 = y0 + overlay->height; w = this->subImage->width; h = this->subImage->height; - + x0 = (x0 < 0) ? 0 : ((x0 > w) ? w : x0); y0 = (y0 < 0) ? 0 : ((y0 > h) ? h : y0); x1 = (x1 < 0) ? 0 : ((x1 > w) ? w : x1); @@ -1518,22 +1518,22 @@ static void xxmc_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, /* anything left after clipping? */ if (x0 != x1 && y0 != y1) { XVMCLOCKDISPLAY( this->display ); - XvMCCompositeSubpicture( this->display, this->new_subpic, - this->subImage, + XvMCCompositeSubpicture( this->display, this->new_subpic, + this->subImage, x0, y0, x1 - x0, y1 - y0, x0, y0); XVMCUNLOCKDISPLAY( this->display ); } - xvmc_context_reader_unlock( &this->xvmc_lock ); + xvmc_context_reader_unlock( &this->xvmc_lock ); } } - } else { + } else { if (frame->format == XINE_IMGFMT_YV12) { - _x_blend_yuv(frame->vo_frame.base, overlay, + _x_blend_yuv(frame->vo_frame.base, overlay, frame->width, frame->height, frame->vo_frame.pitches, &this->alphablend_extra_data); } else { - _x_blend_yuy2(frame->vo_frame.base[0], overlay, + _x_blend_yuy2(frame->vo_frame.base[0], overlay, frame->width, frame->height, frame->vo_frame.pitches[0], &this->alphablend_extra_data); } @@ -1541,7 +1541,7 @@ static void xxmc_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, } } -static void xxmc_add_recent_frame (xxmc_driver_t *this, xxmc_frame_t *frame) +static void xxmc_add_recent_frame (xxmc_driver_t *this, xxmc_frame_t *frame) { int i; i = VO_NUM_RECENT_FRAMES-1; @@ -1555,11 +1555,11 @@ static void xxmc_add_recent_frame (xxmc_driver_t *this, xxmc_frame_t *frame) this->recent_frames[0] = frame; } -static int xxmc_redraw_needed (vo_driver_t *this_gen) +static int xxmc_redraw_needed (vo_driver_t *this_gen) { xxmc_driver_t *this = (xxmc_driver_t *) this_gen; int ret = 0; - + if( this->cur_frame ) { this->sc.delivered_height = this->cur_frame->height; @@ -1576,8 +1576,8 @@ static int xxmc_redraw_needed (vo_driver_t *this_gen) if( _x_vo_scale_redraw_needed( &this->sc ) ) { xxmc_compute_output_size (this); - - xxmc_clean_output_area + + xxmc_clean_output_area (this, (this->cur_frame->format == XINE_IMGFMT_XXMC)); ret = 1; @@ -1589,7 +1589,7 @@ static int xxmc_redraw_needed (vo_driver_t *this_gen) return ret; } -static void xxmc_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) +static void xxmc_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { xxmc_driver_t *this = (xxmc_driver_t *) this_gen; xxmc_frame_t *frame = (xxmc_frame_t *) frame_gen; @@ -1623,7 +1623,7 @@ static void xxmc_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) * reset this flag now -- it will be set again before the next call to * xxmc_display_frame() as long as there is a scaled OSD active on screen. */ - this->scaled_osd_active = 0; + this->scaled_osd_active = 0; /* * queue frames (deinterlacing) @@ -1681,7 +1681,7 @@ static void xxmc_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) this->sc.displayed_xoffset, this->sc.displayed_yoffset, this->sc.displayed_width, this->sc.displayed_height, this->sc.output_xoffset, this->sc.output_yoffset, - this->sc.output_width, this->sc.output_height, + this->sc.output_width, this->sc.output_height, this->cur_field); XUnlockDisplay( this->display ); /* unblocks XINE_GUI_SEND_DRAWABLE_CHANGED from changing drawable */ XVMCUNLOCKDISPLAY( this->display ); @@ -1717,12 +1717,12 @@ static void xxmc_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) this->sc.displayed_xoffset, this->sc.displayed_yoffset, this->sc.displayed_width, this->sc.displayed_height, this->sc.output_xoffset, this->sc.output_yoffset, - this->sc.output_width, this->sc.output_height, + this->sc.output_width, this->sc.output_height, this->cur_field); XUnlockDisplay( this->display ); /* unblocks XINE_GUI_SEND_DRAWABLE_CHANGED from changing drawable */ XVMCUNLOCKDISPLAY( this->display ); } - } + } } else { XLockDisplay (this->display); if (this->use_shm) { @@ -1789,7 +1789,7 @@ static void xxmc_property_callback (void *property_gen, xine_cfg_entry_t *entry) if (this->contextActive) { XVMCLOCKDISPLAY( this->display ); XvMCSetAttribute(this->display, &this->context, - property->atom, + property->atom, entry->num_value); XVMCUNLOCKDISPLAY( this->display ); } @@ -1809,7 +1809,7 @@ static int xxmc_set_property (vo_driver_t *this_gen, if (this->contextActive) { XVMCLOCKDISPLAY( this->display ); XvMCSetAttribute(this->display, &this->context, - this->props[property].atom, + this->props[property].atom, value); XVMCUNLOCKDISPLAY( this->display ); } @@ -1827,7 +1827,7 @@ static int xxmc_set_property (vo_driver_t *this_gen, this->props[property].entry->num_value = this->props[property].value; return this->props[property].value; - } + } else { switch (property) { @@ -1843,7 +1843,7 @@ static int xxmc_set_property (vo_driver_t *this_gen, value = XINE_VO_ASPECT_AUTO; this->props[property].value = value; - xprintf(this->xine, XINE_VERBOSITY_LOG, + xprintf(this->xine, XINE_VERBOSITY_LOG, "video_out_xxmc: VO_PROP_ASPECT_RATIO(%d)\n", this->props[property].value); this->sc.user_ratio = value; @@ -1857,7 +1857,7 @@ static int xxmc_set_property (vo_driver_t *this_gen, this->props[property].value = value; xprintf(this->xine, XINE_VERBOSITY_LOG, "video_out_xxmc: VO_PROP_ZOOM_X = %d\n", this->props[property].value); - + this->sc.zoom_factor_x = (double)value / (double)XINE_VO_ZOOM_STEP; xxmc_compute_ideal_size (this); @@ -1902,7 +1902,7 @@ static int xxmc_gui_data_exchange (vo_driver_t *this_gen, case XINE_GUI_SEND_COMPLETION_EVENT: break; #endif - + case XINE_GUI_SEND_EXPOSE_EVENT: { /* XExposeEvent * xev = (XExposeEvent *) data; */ @@ -1914,7 +1914,7 @@ static int xxmc_gui_data_exchange (vo_driver_t *this_gen, if ((frame->format == XINE_IMGFMT_XXMC) && (!xxmc->decoded || !xxmc_xvmc_surface_valid(this, frame->xvmc_surf))) { xvmc_context_reader_unlock( &this->xvmc_lock ); - if (! xxmc_redraw_needed (this_gen)) + if (! xxmc_redraw_needed (this_gen)) xxmc_clean_output_area(this, (frame->format == XINE_IMGFMT_XXMC)); break; } @@ -1928,8 +1928,8 @@ static int xxmc_gui_data_exchange (vo_driver_t *this_gen, this->sc.displayed_xoffset, this->sc.displayed_yoffset, this->sc.displayed_width, this->sc.displayed_height, this->sc.output_xoffset, this->sc.output_yoffset, - this->sc.output_width, this->sc.output_height, - this->cur_field); + this->sc.output_width, this->sc.output_height, + this->cur_field); XVMCUNLOCKDISPLAY( this->display ); } else { XLockDisplay (this->display); @@ -1954,10 +1954,10 @@ static int xxmc_gui_data_exchange (vo_driver_t *this_gen, xvmc_context_reader_unlock( &this->xvmc_lock ); } if(this->xoverlay) - x11osd_expose(this->xoverlay); - + x11osd_expose(this->xoverlay); + } - + break; case XINE_GUI_SEND_DRAWABLE_CHANGED: @@ -2000,7 +2000,7 @@ static void xxmc_dispose (vo_driver_t *this_gen) { xxmc_driver_t *this = (xxmc_driver_t *) this_gen; int i; - + if (this->xvmc_cap) { xvmc_context_writer_lock( &this->xvmc_lock ); xxmc_dispose_context( this ); @@ -2037,7 +2037,7 @@ static void xxmc_dispose (vo_driver_t *this_gen) { free_context_lock(&this->xvmc_lock); _x_alphablend_free(&this->alphablend_extra_data); - + free (this); } @@ -2048,7 +2048,7 @@ static int xxmc_check_yv12 (Display *display, XvPortID port) { int i; formatValues = XvListImageFormats (display, port, &formats); - + for (i = 0; i < formats; i++) if ((formatValues[i].id == XINE_IMGFMT_YV12) && (! (strcmp (formatValues[i].guid, "YV12")))) { @@ -2069,7 +2069,7 @@ static void xxmc_check_capability (xxmc_driver_t *this, int int_default; cfg_entry_t *entry; const char *str_prop = attr.name; - + if (VO_PROP_COLORKEY && (attr.max_value == ~0)) attr.max_value = 2147483615; @@ -2088,7 +2088,7 @@ static void xxmc_check_capability (xxmc_driver_t *this, */ if(strcmp(str_prop, "XV_AUTOPAINT_COLORKEY") == 0) int_default = 1; - + if (config_name) { /* is this a boolean property ? */ if ((attr.min_value == 0) && (attr.max_value == 1)) { @@ -2105,12 +2105,12 @@ static void xxmc_check_capability (xxmc_driver_t *this, entry = this->config->lookup_entry (this->config, config_name); - if((entry->num_value < this->props[property].min) || + if((entry->num_value < this->props[property].min) || (entry->num_value > this->props[property].max)) { - this->config->update_num(this->config, config_name, + this->config->update_num(this->config, config_name, ((this->props[property].min + this->props[property].max) >> 1)); - + entry = this->config->lookup_entry (this->config, config_name); } @@ -2118,13 +2118,13 @@ static void xxmc_check_capability (xxmc_driver_t *this, xxmc_set_property (&this->vo_driver, property, entry->num_value); - + if (strcmp(str_prop, "XV_COLORKEY") == 0) { this->use_colorkey |= 1; this->colorkey = entry->num_value; } else if(strcmp(str_prop, "XV_AUTOPAINT_COLORKEY") == 0) { if(entry->num_value==1) - this->use_colorkey |= 2; + this->use_colorkey |= 2; } } else this->props[property].value = int_default; @@ -2241,13 +2241,13 @@ static XvPortID xxmc_autodetect_port(xxmc_driver_t *this, } -static void checkXvMCCap( xxmc_driver_t *this, XvPortID xv_port) +static void checkXvMCCap( xxmc_driver_t *this, XvPortID xv_port) { int numSurf,numSub,i,j; XvMCSurfaceInfo *surfaceInfo,*curInfo; - XvMCContext + XvMCContext c; xvmc_capabilities_t *curCap; @@ -2266,13 +2266,13 @@ static void checkXvMCCap( xxmc_driver_t *this, XvPortID xv_port) XVMCLOCKDISPLAY( this->display ); - if ( !XvMCQueryExtension(this->display, &this->xvmc_eventbase, + if ( !XvMCQueryExtension(this->display, &this->xvmc_eventbase, &this->xvmc_errbase)) { XVMCUNLOCKDISPLAY( this->display ); xvmc_context_writer_unlock( &this->xvmc_lock ); return; } - xprintf (this->xine, XINE_VERBOSITY_DEBUG, + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_xxmc: XvMC extension present.\n"); surfaceInfo = XvMCListSurfaceTypes(this->display, xv_port, &numSurf); @@ -2288,56 +2288,56 @@ static void checkXvMCCap( xxmc_driver_t *this, XvPortID xv_port) curInfo = surfaceInfo; curCap = this->xvmc_cap; - xprintf (this->xine, XINE_VERBOSITY_DEBUG, + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_xxmc: Found %d XvMC surface types\n",numSurf); for (i=0; i< numSurf; ++i) { curCap->mpeg_flags = 0; curCap->accel_flags = 0; if (curInfo->chroma_format == XVMC_CHROMA_FORMAT_420) { - curCap->mpeg_flags |= ((curInfo->mc_type & XVMC_MPEG_1) ? - XINE_XVMC_MPEG_1 : 0); - curCap->mpeg_flags |= ((curInfo->mc_type & XVMC_MPEG_2) ? + curCap->mpeg_flags |= ((curInfo->mc_type & XVMC_MPEG_1) ? + XINE_XVMC_MPEG_1 : 0); + curCap->mpeg_flags |= ((curInfo->mc_type & XVMC_MPEG_2) ? XINE_XVMC_MPEG_2 : 0); - curCap->mpeg_flags |= ((curInfo->mc_type & XVMC_MPEG_4) ? + curCap->mpeg_flags |= ((curInfo->mc_type & XVMC_MPEG_4) ? XINE_XVMC_MPEG_4 : 0); - curCap->accel_flags |= ((curInfo->mc_type & XVMC_VLD) ? + curCap->accel_flags |= ((curInfo->mc_type & XVMC_VLD) ? XINE_XVMC_ACCEL_VLD : 0); - curCap->accel_flags |= ((curInfo->mc_type & XVMC_IDCT) ? + curCap->accel_flags |= ((curInfo->mc_type & XVMC_IDCT) ? XINE_XVMC_ACCEL_IDCT : 0); - curCap->accel_flags |= ((curInfo->mc_type & (XVMC_VLD | XVMC_IDCT)) ? + curCap->accel_flags |= ((curInfo->mc_type & (XVMC_VLD | XVMC_IDCT)) ? 0 : XINE_XVMC_ACCEL_MOCOMP); curCap->max_width = curInfo->max_width; curCap->max_height = curInfo->max_height; curCap->sub_max_width = curInfo->subpicture_max_width; curCap->sub_max_height = curInfo->subpicture_max_height; curCap->flags = curInfo->flags; - xprintf (this->xine, XINE_VERBOSITY_DEBUG, + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_xxmc: Surface type %d: Max size: %d %d.\n", i,curCap->max_width,curCap->max_height); - xprintf (this->xine, XINE_VERBOSITY_DEBUG, + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_xxmc: Surface type %d: Max subpic size: %d %d.\n", i,curCap->sub_max_width,curCap->sub_max_height); - + curCap->type_id = curInfo->surface_type_id; - formatValues = XvMCListSubpictureTypes( this->display, xv_port, + formatValues = XvMCListSubpictureTypes( this->display, xv_port, curCap->type_id, &numSub); curCap->subPicType.id = 0; if (formatValues) { - xprintf (this->xine, XINE_VERBOSITY_DEBUG, + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_xxmc: Surface type %d: Found %d XvMC subpicture " "types\n",i,numSub); for (j = 0; j<numSub; ++j) { if (formatValues[j].id == FOURCC_IA44) { curCap->subPicType = formatValues[j]; - xprintf (this->xine, XINE_VERBOSITY_DEBUG, + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_xxmc: Surface type %d: Detected and using " "IA44 subpicture type.\n",i); /* Prefer IA44 */ break; } else if (formatValues[j].id == FOURCC_AI44) { curCap->subPicType = formatValues[j]; - xprintf (this->xine, XINE_VERBOSITY_DEBUG, + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_xxmc: Surface type %d: Detected AI44 " "subpicture type.\n",i); } @@ -2347,7 +2347,7 @@ static void checkXvMCCap( xxmc_driver_t *this, XvPortID xv_port) XFree(formatValues); curInfo++; - curCap++; + curCap++; } } XFree(surfaceInfo); @@ -2356,7 +2356,7 @@ static void checkXvMCCap( xxmc_driver_t *this, XvPortID xv_port) * Try to create a direct rendering context. This will fail if we are not * on the displaying computer or an indirect context is not available. */ - + curCap = this->xvmc_cap; if (Success == XvMCCreateContext( this->display, xv_port, curCap->type_id, curCap->max_width,curCap->max_height, @@ -2369,7 +2369,7 @@ static void checkXvMCCap( xxmc_driver_t *this, XvPortID xv_port) } else { free(this->xvmc_cap); this->xvmc_cap = 0; - xprintf (this->xine, XINE_VERBOSITY_DEBUG, + xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out_xxmc: Apparent attempt to use a direct XvMC " "context\nvideo_out_xxmc: on a remote display. " "Falling back to XV.\n"); @@ -2387,8 +2387,8 @@ static void checkXvMCCap( xxmc_driver_t *this, XvPortID xv_port) return; } - - + + static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *visual_gen) { @@ -2409,7 +2409,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi XvAdaptorInfo *adaptor_info; unsigned int adaptor_num; xv_prefertype prefer_type; - cfg_entry_t *entry; + cfg_entry_t *entry; int use_more_frames; int use_unscaled; @@ -2418,7 +2418,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi return NULL; _x_alphablend_init(&this->alphablend_extra_data, class->xine); - + this->display = visual->display; this->screen = visual->screen; this->config = config; @@ -2475,19 +2475,19 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi xprintf(class->xine, XINE_VERBOSITY_LOG, _("video_out_xxmc: Xv extension is present but I couldn't find a usable yuv12 port.\n" " Looks like your graphics hardware driver doesn't support Xv?!\n")); - + /* XvFreeAdaptorInfo (adaptor_info); this crashed on me (gb)*/ XUnlockDisplay(this->display); return NULL; - } + } else xprintf(class->xine, XINE_VERBOSITY_LOG, _("video_out_xxmc: using Xv port %ld from adaptor %s for hardware " "colour space conversion and scaling.\n"), xv_port, adaptor_info[adaptor_num].name); - + XUnlockDisplay(this->display); - + this->xv_port = xv_port; _x_vo_scale_init (&this->sc, 1, 0, config ); @@ -2633,10 +2633,10 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi fo = XvListImageFormats(this->display, this->xv_port, (int*)&formats); XUnlockDisplay (this->display); - + this->xv_format_yv12 = 0; this->xv_format_yuy2 = 0; - + for(i = 0; i < formats; i++) { lprintf ("Xv image format: 0x%x (%4.4s) %s\n", fo[i].id, (char*)&fo[i].id, @@ -2650,7 +2650,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi } else if (fo[i].id == XINE_IMGFMT_YUY2) { this->xv_format_yuy2 = fo[i].id; this->capabilities |= VO_CAP_YUY2; - xprintf(this->xine, XINE_VERBOSITY_LOG, + xprintf(this->xine, XINE_VERBOSITY_LOG, _("video_out_xxmc: this adaptor supports the yuy2 format.\n")); } } @@ -2672,19 +2672,19 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi dispose_ximage (this, &myshminfo, myimage); XUnlockDisplay (this->display); - this->use_pitch_alignment = + this->use_pitch_alignment = config->register_bool (config, "video.device.xv_pitch_alignment", 0, VIDEO_DEVICE_XV_PITCH_ALIGNMENT_HELP, 10, xxmc_update_xv_pitch_alignment, this); - use_more_frames= + use_more_frames= config->register_bool (config, "video.device.xvmc_more_frames", 0, _("Make XvMC allocate more frames for better buffering."), _("Some XvMC implementations allow more than 8 frames.\n" "This option, when turned on, makes the driver try to\n" "allocate 15 frames. A must for unichrome and live VDR.\n"), 10, NULL, this); - this->cpu_save_enabled = + this->cpu_save_enabled = config->register_bool (config, "video.device.unichrome_cpu_save", 0, _("Unichrome cpu save"), _("Saves CPU time by sleeping while decoder works.\n" @@ -2723,7 +2723,7 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi #ifdef HAVE_VLDXVMC printf("video_out_xxmc: Unichrome CPU saving is %s.\n", - (this->cpu_save_enabled) ? "on":"off"); + (this->cpu_save_enabled) ? "on":"off"); #else printf("video_out_xxmc: warning - compiled with no vld extensions.\n"); #endif @@ -2752,10 +2752,10 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *vi } XUnlockDisplay (this->display); } - + if( this->xoverlay ) { this->capabilities |= VO_CAP_UNSCALED_OVERLAY; - } + } return &this->vo_driver; } @@ -2773,7 +2773,7 @@ static char* get_description (video_driver_class_t *this_gen) { static void dispose_class (video_driver_class_t *this_gen) { xxmc_class_t *this = (xxmc_class_t *) this_gen; - + free (this); } @@ -2808,4 +2808,4 @@ const plugin_info_t xine_plugin_info[] EXPORTED = { { PLUGIN_VIDEO_OUT, 21, "xxmc", XINE_VERSION_CODE, &vo_info_xxmc, init_class }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; - + |