diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2009-01-15 05:07:09 +0200 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2009-01-15 05:57:31 +0200 |
commit | 9bcd12fdf5c6f85e9bb391caa2713021624a957e (patch) | |
tree | 375eac533ead90a45e7121e5ab307861b4ef52c8 /libvo/vo_xvmc.c | |
parent | d419ecd161634e79dab3ac57d57c4bccba2adcdc (diff) | |
parent | e0d66b140e1da7a793bff15003cadab79544b1dd (diff) | |
download | mpv-9bcd12fdf5c6f85e9bb391caa2713021624a957e.tar.bz2 mpv-9bcd12fdf5c6f85e9bb391caa2713021624a957e.tar.xz |
Merge svn changes up to r28310
The libdvdread4 and libdvdnav directories, which are externals in the
svn repository, are at least for now not included in any form. I added
configure checks to automatically disable internal libdvdread and
libdvdnav if the corresponding directories are not present; if they're
added manually then things work the same as in svn.
Diffstat (limited to 'libvo/vo_xvmc.c')
-rw-r--r-- | libvo/vo_xvmc.c | 69 |
1 files changed, 27 insertions, 42 deletions
diff --git a/libvo/vo_xvmc.c b/libvo/vo_xvmc.c index 89fb2e6fe8..ebc3b6be3d 100644 --- a/libvo/vo_xvmc.c +++ b/libvo/vo_xvmc.c @@ -84,13 +84,13 @@ static XvMCMacroBlockArray mv_blocks; #define MAX_SURFACES 8 static int number_of_surfaces=0; static XvMCSurface surface_array[MAX_SURFACES]; -static xvmc_render_state_t * surface_render; +static struct xvmc_render_state * surface_render; -static xvmc_render_state_t * p_render_surface_to_show=NULL; -static xvmc_render_state_t * p_render_surface_visible=NULL; +static struct xvmc_render_state * p_render_surface_to_show=NULL; +static struct xvmc_render_state * p_render_surface_visible=NULL; //display queue, kinda render ahead -static xvmc_render_state_t * show_queue[MAX_SURFACES]; +static struct xvmc_render_state * show_queue[MAX_SURFACES]; static int free_element; @@ -117,8 +117,8 @@ static const struct{ static void xvmc_free(void); static void xvmc_clean_surfaces(void); -static int count_free_surfaces(); -static xvmc_render_state_t * find_free_surface(); +static int count_free_surfaces(void); +static struct xvmc_render_state * find_free_surface(void); static const vo_info_t info = { "XVideo Motion Compensation", @@ -175,7 +175,7 @@ static void allocate_xvimage(int xvimage_width,int xvimage_height,int xv_format) return; } -static void deallocate_xvimage() +static void deallocate_xvimage(void) { #ifdef HAVE_SHM if ( Shmem_Flag ) @@ -346,13 +346,13 @@ surface_found: } static uint32_t xvmc_draw_image(mp_image_t *mpi){ -xvmc_render_state_t * rndr; + struct xvmc_render_state * rndr; assert(mpi!=NULL); assert(mpi->flags &MP_IMGFLAG_DIRECT); // assert(mpi->flags &MP_IMGFLAGS_DRAWBACK); - rndr = (xvmc_render_state_t*)mpi->priv;//there is copy in plane[2] + rndr = (struct xvmc_render_state*)mpi->priv;//there is copy in plane[2] assert( rndr != NULL ); assert( rndr->magic == MP_XVMC_RENDER_MAGIC ); if( mp_msg_test(MSGT_VO,MSGL_DBG4) ) @@ -431,22 +431,6 @@ opt_t subopts [] = return 0; } -static void calc_drwXY(uint32_t *drwX, uint32_t *drwY) { - *drwX = *drwY = 0; - if (vo_fs) { - aspect(&vo_dwidth, &vo_dheight, A_ZOOM); - vo_dwidth = FFMIN(vo_dwidth, vo_screenwidth); - vo_dheight = FFMIN(vo_dheight, vo_screenheight); - *drwX = (vo_screenwidth - vo_dwidth) / 2; - *drwY = (vo_screenheight - vo_dheight) / 2; - mp_msg(MSGT_VO, MSGL_V, "[xvmc-fs] dx: %d dy: %d dw: %d dh: %d\n", - *drwX, *drwY, vo_dwidth, vo_dheight); - } else if (WinID == 0) { - *drwX = vo_dx; - *drwY = vo_dy; - } -} - static int config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format){ @@ -520,8 +504,8 @@ int vm = flags & VOFLAG_MODESWITCHING; printf("vo_xvmc: mv_blocks allocated\n"); if(surface_render==NULL) - surface_render=malloc(MAX_SURFACES*sizeof(xvmc_render_state_t));//easy mem debug - memset(surface_render,0,MAX_SURFACES*sizeof(xvmc_render_state_t)); + surface_render=malloc(MAX_SURFACES*sizeof(struct xvmc_render_state));//easy mem debug + memset(surface_render,0,MAX_SURFACES*sizeof(struct xvmc_render_state)); for(i=0; i<MAX_SURFACES; i++){ rez=XvMCCreateSurface(mDisplay,&ctx,&surface_array[i]); @@ -674,7 +658,7 @@ skip_surface_allocation: } if ((flags & VOFLAG_FULLSCREEN) && WinID <= 0) vo_fs = 1; - calc_drwXY(&drwX, &drwY); + vo_calc_drwXY(&drwX, &drwY); panscan_calc(); @@ -699,7 +683,7 @@ static int draw_frame(uint8_t *srcp[]){ assert(0); } -static void init_osd_yuv_pal(){ +static void init_osd_yuv_pal(void) { char * palette; int rez; int i,j; @@ -745,7 +729,7 @@ int rez; printf("vo_xvmc: XvMCClearSubpicture failed!\n"); } -static void OSD_init(){ +static void OSD_init(void) { unsigned short osd_height, osd_width; int rez; @@ -850,7 +834,7 @@ int rez; } static void draw_osd(void){ -xvmc_render_state_t * osd_rndr; +struct xvmc_render_state * osd_rndr; int osd_has_changed; int have_osd_to_draw; int rez; @@ -945,7 +929,8 @@ int status,rez; XvMCSyncSurface(mDisplay, srf); } -static void put_xvmc_image(xvmc_render_state_t * p_render_surface, int draw_ck){ +static void put_xvmc_image(struct xvmc_render_state * p_render_surface, + int draw_ck){ int rez; int clipX,clipY,clipW,clipH; int i; @@ -1034,7 +1019,7 @@ int e=vo_x11_check_events(mDisplay); { e |= VO_EVENT_EXPOSE; - calc_drwXY(&drwX, &drwY); + vo_calc_drwXY(&drwX, &drwY); } if ( e & VO_EVENT_EXPOSE ) { @@ -1071,7 +1056,7 @@ int i; surface_render[i].state); } - memset(surface_render,0,MAX_SURFACES*sizeof(xvmc_render_state_t));//for debuging + memset(surface_render,0,MAX_SURFACES*sizeof(struct xvmc_render_state));//for debuging free(surface_render);surface_render=NULL; XvMCDestroyContext(mDisplay,&ctx); @@ -1127,13 +1112,13 @@ int mode_id; static int draw_slice(uint8_t *image[], int stride[], int w, int h, int x, int y){ -xvmc_render_state_t * rndr; +struct xvmc_render_state * rndr; int rez; if( mp_msg_test(MSGT_VO,MSGL_DBG4) ) printf("vo_xvmc: draw_slice y=%d\n",y); - rndr = (xvmc_render_state_t*)image[2];//this is copy of priv-ate + rndr = (struct xvmc_render_state*)image[2];//this is copy of priv-ate assert( rndr != NULL ); assert( rndr->magic == MP_XVMC_RENDER_MAGIC ); @@ -1187,8 +1172,8 @@ int rez; //XvMCHide hides the surface on next retrace, so //check if the surface is not still displaying -static void check_osd_source(xvmc_render_state_t * src_rndr){ -xvmc_render_state_t * osd_rndr; +static void check_osd_source(struct xvmc_render_state * src_rndr){ +struct xvmc_render_state * osd_rndr; int stat; //If this is source surface, check does the OSD rendering is compleate if(src_rndr->state & MP_XVMC_STATE_OSD_SOURCE){ @@ -1200,7 +1185,7 @@ int stat; src_rndr->state &= ~MP_XVMC_STATE_OSD_SOURCE; } } -static int count_free_surfaces(){ +static int count_free_surfaces(void) { int i,num; num=0; for(i=0; i<number_of_surfaces; i++){ @@ -1211,10 +1196,10 @@ int i,num; return num; } -static xvmc_render_state_t * find_free_surface(){ +static struct xvmc_render_state * find_free_surface(void) { int i,t; int stat; -xvmc_render_state_t * visible_rndr; +struct xvmc_render_state * visible_rndr; visible_rndr = NULL; for(i=0; i<number_of_surfaces; i++){ @@ -1264,7 +1249,7 @@ int i; } static uint32_t get_image(mp_image_t *mpi){ -xvmc_render_state_t * rndr; + struct xvmc_render_state * rndr; rndr = find_free_surface(); |