diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2008-10-25 05:12:34 +0300 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2008-10-25 05:12:34 +0300 |
commit | 030130942562bb7b84eeba53e0226abed5a63a4c (patch) | |
tree | 9b49208facf2801369c9d2d7b3e7af11fab36829 /libvo | |
parent | 562d86d95cbba67cb58358f6fc334553a467dee7 (diff) | |
parent | 15a80092161a1cd305f8005c780c744416a5252b (diff) | |
download | mpv-030130942562bb7b84eeba53e0226abed5a63a4c.tar.bz2 mpv-030130942562bb7b84eeba53e0226abed5a63a4c.tar.xz |
Merge svn changes up to 27824
Conflicts:
cfg-common-opts.h
libmpcodecs/dec_video.c
libmpcodecs/vd.c
libvo/x11_common.h
mplayer.c
stream/cache2.c
Diffstat (limited to 'libvo')
-rw-r--r-- | libvo/aclib_template.c | 24 | ||||
-rw-r--r-- | libvo/osd_template.c | 42 | ||||
-rw-r--r-- | libvo/video_out.c | 2 | ||||
-rw-r--r-- | libvo/vo_cvidix.c | 11 | ||||
-rw-r--r-- | libvo/vo_directx.c | 2 | ||||
-rw-r--r-- | libvo/vo_dxr2.c | 3 | ||||
-rw-r--r-- | libvo/vo_gl2.c | 2 | ||||
-rw-r--r-- | libvo/vo_sdl.c | 2 | ||||
-rw-r--r-- | libvo/vo_winvidix.c | 1 | ||||
-rw-r--r-- | libvo/vo_x11.c | 8 | ||||
-rw-r--r-- | libvo/vo_xvidix.c | 41 | ||||
-rw-r--r-- | libvo/x11_common.c | 9 | ||||
-rw-r--r-- | libvo/x11_common.h | 6 |
13 files changed, 71 insertions, 82 deletions
diff --git a/libvo/aclib_template.c b/libvo/aclib_template.c index ac08aab3f9..7288831172 100644 --- a/libvo/aclib_template.c +++ b/libvo/aclib_template.c @@ -84,7 +84,7 @@ If you have questions please contact with me: Nick Kurshev: nickols_k@mail.ru. #define small_memcpy(to,from,n)\ {\ register unsigned long int dummy;\ -__asm__ __volatile__(\ +__asm__ volatile(\ "rep; movsb"\ :"=&D"(to), "=&S"(from), "=&c"(dummy)\ /* It's most portable way to notify compiler */\ @@ -153,7 +153,7 @@ static void * RENAME(fast_memcpy)(void * to, const void * from, size_t len) #endif #ifndef HAVE_ONLY_MMX1 /* PREFETCH has effect even for MOVSB instruction ;) */ - __asm__ __volatile__ ( + __asm__ volatile ( PREFETCH" (%0)\n" PREFETCH" 64(%0)\n" PREFETCH" 128(%0)\n" @@ -188,7 +188,7 @@ static void * RENAME(fast_memcpy)(void * to, const void * from, size_t len) /* if SRC is misaligned */ for(; i>0; i--) { - __asm__ __volatile__ ( + __asm__ volatile ( PREFETCH" 320(%0)\n" "movups (%0), %%xmm0\n" "movups 16(%0), %%xmm1\n" @@ -210,7 +210,7 @@ static void * RENAME(fast_memcpy)(void * to, const void * from, size_t len) */ for(; i>0; i--) { - __asm__ __volatile__ ( + __asm__ volatile ( PREFETCH" 320(%0)\n" "movaps (%0), %%xmm0\n" "movaps 16(%0), %%xmm1\n" @@ -228,7 +228,7 @@ static void * RENAME(fast_memcpy)(void * to, const void * from, size_t len) // Align destination at BLOCK_SIZE boundary for(; ((int)to & (BLOCK_SIZE-1)) && i>0; i--) { - __asm__ __volatile__ ( + __asm__ volatile ( #ifndef HAVE_ONLY_MMX1 PREFETCH" 320(%0)\n" #endif @@ -256,7 +256,7 @@ static void * RENAME(fast_memcpy)(void * to, const void * from, size_t len) // printf(" %d %d\n", (int)from&1023, (int)to&1023); // Pure Assembly cuz gcc is a bit unpredictable ;) if(i>=BLOCK_SIZE/64) - asm volatile( + __asm__ volatile( "xor %%"REG_a", %%"REG_a" \n\t" ASMALIGN(4) "1: \n\t" @@ -317,7 +317,7 @@ static void * RENAME(fast_memcpy)(void * to, const void * from, size_t len) for(; i>0; i--) { - __asm__ __volatile__ ( + __asm__ volatile ( #ifndef HAVE_ONLY_MMX1 PREFETCH" 320(%0)\n" #endif @@ -346,11 +346,11 @@ static void * RENAME(fast_memcpy)(void * to, const void * from, size_t len) #ifdef HAVE_MMX2 /* since movntq is weakly-ordered, a "sfence" * is needed to become ordered again. */ - __asm__ __volatile__ ("sfence":::"memory"); + __asm__ volatile ("sfence":::"memory"); #endif #ifndef HAVE_SSE /* enables to use FPU */ - __asm__ __volatile__ (EMMS:::"memory"); + __asm__ volatile (EMMS:::"memory"); #endif } /* @@ -405,7 +405,7 @@ static void * RENAME(mem2agpcpy)(void * to, const void * from, size_t len) */ for(; i>0; i--) { - __asm__ __volatile__ ( + __asm__ volatile ( PREFETCH" 320(%0)\n" "movq (%0), %%mm0\n" "movq 8(%0), %%mm1\n" @@ -430,10 +430,10 @@ static void * RENAME(mem2agpcpy)(void * to, const void * from, size_t len) #ifdef HAVE_MMX2 /* since movntq is weakly-ordered, a "sfence" * is needed to become ordered again. */ - __asm__ __volatile__ ("sfence":::"memory"); + __asm__ volatile ("sfence":::"memory"); #endif /* enables to use FPU */ - __asm__ __volatile__ (EMMS:::"memory"); + __asm__ volatile (EMMS:::"memory"); } /* * Now do the tail of the block diff --git a/libvo/osd_template.c b/libvo/osd_template.c index 45a318b745..c44f060a5d 100644 --- a/libvo/osd_template.c +++ b/libvo/osd_template.c @@ -33,7 +33,7 @@ static inline void RENAME(vo_draw_alpha_yv12)(int w,int h, unsigned char* src, u w=w>>1; #endif #ifdef HAVE_MMX - asm volatile( + __asm__ volatile( "pcmpeqb %%mm5, %%mm5\n\t" // F..F "movq %%mm5, %%mm4\n\t" "movq %%mm5, %%mm7\n\t" @@ -44,13 +44,13 @@ static inline void RENAME(vo_draw_alpha_yv12)(int w,int h, unsigned char* src, u for(y=0;y<h;y++){ register int x; #ifdef HAVE_MMX - asm volatile( + __asm__ volatile( PREFETCHW" %0\n\t" PREFETCH" %1\n\t" PREFETCH" %2\n\t" ::"m"(*dstbase),"m"(*srca),"m"(*src):"memory"); for(x=0;x<w;x+=8){ - asm volatile( + __asm__ volatile( "movl %1, %%eax\n\t" "orl 4%1, %%eax\n\t" " jz 1f\n\t" @@ -92,7 +92,7 @@ static inline void RENAME(vo_draw_alpha_yv12)(int w,int h, unsigned char* src, u dstbase+=dststride; } #ifdef HAVE_MMX - asm volatile(EMMS:::"memory"); + __asm__ volatile(EMMS:::"memory"); #endif return; } @@ -103,7 +103,7 @@ static inline void RENAME(vo_draw_alpha_yuy2)(int w,int h, unsigned char* src, u w=w>>1; #endif #ifdef HAVE_MMX - asm volatile( + __asm__ volatile( "pxor %%mm7, %%mm7\n\t" "pcmpeqb %%mm5, %%mm5\n\t" // F..F "movq %%mm5, %%mm6\n\t" @@ -115,13 +115,13 @@ static inline void RENAME(vo_draw_alpha_yuy2)(int w,int h, unsigned char* src, u for(y=0;y<h;y++){ register int x; #ifdef HAVE_MMX - asm volatile( + __asm__ volatile( PREFETCHW" %0\n\t" PREFETCH" %1\n\t" PREFETCH" %2\n\t" ::"m"(*dstbase),"m"(*srca),"m"(*src)); for(x=0;x<w;x+=4){ - asm volatile( + __asm__ volatile( "movl %1, %%eax\n\t" "orl %%eax, %%eax\n\t" " jz 1f\n\t" @@ -164,7 +164,7 @@ static inline void RENAME(vo_draw_alpha_yuy2)(int w,int h, unsigned char* src, u dstbase+=dststride; } #ifdef HAVE_MMX - asm volatile(EMMS:::"memory"); + __asm__ volatile(EMMS:::"memory"); #endif return; } @@ -196,7 +196,7 @@ static inline void RENAME(vo_draw_alpha_uyvy)(int w,int h, unsigned char* src, u static inline void RENAME(vo_draw_alpha_rgb24)(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ int y; #ifdef HAVE_MMX - asm volatile( + __asm__ volatile( "pxor %%mm7, %%mm7\n\t" "pcmpeqb %%mm6, %%mm6\n\t" // F..F ::); @@ -206,14 +206,14 @@ static inline void RENAME(vo_draw_alpha_rgb24)(int w,int h, unsigned char* src, register int x; #if defined(ARCH_X86) && (!defined(ARCH_X86_64) || defined(HAVE_MMX)) #ifdef HAVE_MMX - asm volatile( + __asm__ volatile( PREFETCHW" %0\n\t" PREFETCH" %1\n\t" PREFETCH" %2\n\t" ::"m"(*dst),"m"(*srca),"m"(*src):"memory"); for(x=0;x<w;x+=2){ if(srca[x] || srca[x+1]) - asm volatile( + __asm__ volatile( PREFETCHW" 32%0\n\t" PREFETCH" 32%1\n\t" PREFETCH" 32%2\n\t" @@ -250,7 +250,7 @@ static inline void RENAME(vo_draw_alpha_rgb24)(int w,int h, unsigned char* src, #else /* HAVE_MMX */ for(x=0;x<w;x++){ if(srca[x]){ - asm volatile( + __asm__ volatile( "movzbl (%0), %%ecx\n\t" "movzbl 1(%0), %%eax\n\t" @@ -296,7 +296,7 @@ static inline void RENAME(vo_draw_alpha_rgb24)(int w,int h, unsigned char* src, dstbase+=dststride; } #ifdef HAVE_MMX - asm volatile(EMMS:::"memory"); + __asm__ volatile(EMMS:::"memory"); #endif return; } @@ -308,12 +308,12 @@ static inline void RENAME(vo_draw_alpha_rgb32)(int w,int h, unsigned char* src, #endif #ifdef HAVE_MMX #ifdef HAVE_3DNOW - asm volatile( + __asm__ volatile( "pxor %%mm7, %%mm7\n\t" "pcmpeqb %%mm6, %%mm6\n\t" // F..F ::); #else /* HAVE_3DNOW */ - asm volatile( + __asm__ volatile( "pxor %%mm7, %%mm7\n\t" "pcmpeqb %%mm5, %%mm5\n\t" // F..F "movq %%mm5, %%mm4\n\t" @@ -327,14 +327,14 @@ static inline void RENAME(vo_draw_alpha_rgb32)(int w,int h, unsigned char* src, #if defined(ARCH_X86) && (!defined(ARCH_X86_64) || defined(HAVE_MMX)) #ifdef HAVE_MMX #ifdef HAVE_3DNOW - asm volatile( + __asm__ volatile( PREFETCHW" %0\n\t" PREFETCH" %1\n\t" PREFETCH" %2\n\t" ::"m"(*dstbase),"m"(*srca),"m"(*src):"memory"); for(x=0;x<w;x+=2){ if(srca[x] || srca[x+1]) - asm volatile( + __asm__ volatile( PREFETCHW" 32%0\n\t" PREFETCH" 32%1\n\t" PREFETCH" 32%2\n\t" @@ -362,13 +362,13 @@ static inline void RENAME(vo_draw_alpha_rgb32)(int w,int h, unsigned char* src, :: "m" (dstbase[4*x]), "m" (srca[x]), "m" (src[x])); } #else //this is faster for intels crap - asm volatile( + __asm__ volatile( PREFETCHW" %0\n\t" PREFETCH" %1\n\t" PREFETCH" %2\n\t" ::"m"(*dstbase),"m"(*srca),"m"(*src):"memory"); for(x=0;x<w;x+=4){ - asm volatile( + __asm__ volatile( "movl %1, %%eax\n\t" "orl %%eax, %%eax\n\t" " jz 1f\n\t" @@ -417,7 +417,7 @@ static inline void RENAME(vo_draw_alpha_rgb32)(int w,int h, unsigned char* src, #else /* HAVE_MMX */ for(x=0;x<w;x++){ if(srca[x]){ - asm volatile( + __asm__ volatile( "movzbl (%0), %%ecx\n\t" "movzbl 1(%0), %%eax\n\t" "movzbl 2(%0), %%edx\n\t" @@ -461,7 +461,7 @@ static inline void RENAME(vo_draw_alpha_rgb32)(int w,int h, unsigned char* src, dstbase+=dststride; } #ifdef HAVE_MMX - asm volatile(EMMS:::"memory"); + __asm__ volatile(EMMS:::"memory"); #endif return; } diff --git a/libvo/video_out.c b/libvo/video_out.c index 90634fecab..88bacc639f 100644 --- a/libvo/video_out.c +++ b/libvo/video_out.c @@ -202,7 +202,7 @@ const struct vo_driver *video_out_drivers[] = #ifdef CONFIG_X11 &video_out_xvidix, #endif -#ifdef WIN32 +#if defined(__MINGW32__) || defined(__CYGWIN__) &video_out_winvidix, #endif &video_out_cvidix, diff --git a/libvo/vo_cvidix.c b/libvo/vo_cvidix.c index c2565ef7ec..75effe0350 100644 --- a/libvo/vo_cvidix.c +++ b/libvo/vo_cvidix.c @@ -81,10 +81,15 @@ static int config(uint32_t width, uint32_t height, uint32_t d_width,uint32_t d_h if(vo_screenwidth && vo_screenheight){ if(!vo_geometry)center=1; } - else mp_msg(MSGT_VO, MSGL_WARN, "vo_cvidix: warn: screenwidth and height not set assuming 640x480\n"); } - if(!vo_screenwidth)vo_screenwidth=640; - if(!vo_screenheight)vo_screenheight=480; + if(!vo_screenwidth){ + mp_msg(MSGT_VO, MSGL_WARN, "vo_cvidix: Screen width not set (see -screenw), assuming 640 pixels.\n"); + vo_screenwidth = 640; + } + if(!vo_screenheight){ + mp_msg(MSGT_VO, MSGL_WARN, "vo_cvidix: Screen height not set (see -screenh), assuming 480 pixels.\n"); + vo_screenheight = 480; + } swidth = width; sheight = height; sformat = format; diff --git a/libvo/vo_directx.c b/libvo/vo_directx.c index 67ed453d04..f492d957d3 100644 --- a/libvo/vo_directx.c +++ b/libvo/vo_directx.c @@ -1273,7 +1273,7 @@ static uint32_t put_image(mp_image_t *mpi){ } else //packed { - fast_memcpy( image, mpi->planes[0], image_height * dstride); + mem2agpcpy_pic(image, mpi->planes[0], w * (mpi->bpp / 8), h, dstride, mpi->stride[0]); } return VO_TRUE; } diff --git a/libvo/vo_dxr2.c b/libvo/vo_dxr2.c index f5dc56bb13..914da3e5cf 100644 --- a/libvo/vo_dxr2.c +++ b/libvo/vo_dxr2.c @@ -20,10 +20,7 @@ #include "sub.h" #include "get_path.h" #include "libmpdemux/mpeg_packetizer.h" - -#ifdef X11_FULLSCREEN #include "x11_common.h" -#endif #include <dxr2ioctl.h> diff --git a/libvo/vo_gl2.c b/libvo/vo_gl2.c index 070fd0d5d6..b2c7e49d25 100644 --- a/libvo/vo_gl2.c +++ b/libvo/vo_gl2.c @@ -677,6 +677,7 @@ config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uin return 0; } +#ifndef GL_WIN32 static int gl_handlekey(int key) { if(key=='a'||key=='A') { @@ -688,6 +689,7 @@ static int gl_handlekey(int key) } return 1; } +#endif static void check_events(void) { diff --git a/libvo/vo_sdl.c b/libvo/vo_sdl.c index 7bf359dc26..d1aeed2b0d 100644 --- a/libvo/vo_sdl.c +++ b/libvo/vo_sdl.c @@ -1120,7 +1120,7 @@ static void check_events (void) { struct sdl_priv_s *priv = &sdl_priv; SDL_Event event; - SDLKey keypressed = 0; + SDLKey keypressed = SDLK_UNKNOWN; /* Poll the waiting SDL Events */ while ( SDL_PollEvent(&event) ) { diff --git a/libvo/vo_winvidix.c b/libvo/vo_winvidix.c index 2581310596..2a8959fa5c 100644 --- a/libvo/vo_winvidix.c +++ b/libvo/vo_winvidix.c @@ -48,7 +48,6 @@ static int depthonscreen; static uint32_t image_width; static uint32_t image_height; static uint32_t image_format; -static HWND hWnd; /* Window parameters */ static HWND hWnd=NULL,hWndFS=NULL; static float window_aspect; diff --git a/libvo/vo_x11.c b/libvo/vo_x11.c index c3692cad58..18861e1266 100644 --- a/libvo/vo_x11.c +++ b/libvo/vo_x11.c @@ -480,7 +480,13 @@ static int config(uint32_t width, uint32_t height, uint32_t d_width, } while (fmte->mpfmt) { - if (IMGFMT_RGB_DEPTH(fmte->mpfmt) == myximage->bits_per_pixel && + int depth = IMGFMT_RGB_DEPTH(fmte->mpfmt); + /* bits_per_pixel in X seems to be set to 16 for 15 bit formats + => force depth to 16 so that only the color masks are used for the format check */ + if (depth == 15) + depth = 16; + + if (depth == myximage->bits_per_pixel && fmte->byte_order == myximage->byte_order && fmte->red_mask == myximage->red_mask && fmte->green_mask == myximage->green_mask && diff --git a/libvo/vo_xvidix.c b/libvo/vo_xvidix.c index 7470034f24..04c8bea4b7 100644 --- a/libvo/vo_xvidix.c +++ b/libvo/vo_xvidix.c @@ -124,44 +124,9 @@ static void set_window(int force_update) vo_dwidth = drwWidth; vo_dheight = drwHeight; -#ifdef CONFIG_XINERAMA - if (XineramaIsActive(mDisplay)) - { - XineramaScreenInfo *screens; - int num_screens; - int i = 0; - - screens = XineramaQueryScreens(mDisplay, &num_screens); - - /* find the screen we are on */ - while (i < num_screens && - ((screens[i].x_org < drwcX) || (screens[i].y_org < drwcY) || - (screens[i].x_org + screens[i].width >= drwcX) || - (screens[i].y_org + screens[i].height >= drwcY))) - { - i++; - } - - if (i < num_screens) - { - /* save the screen we are on */ - xinerama_screen = i; - } else - { - /* oops.. couldnt find the screen we are on - * because the upper left corner left the - * visual range. assume we are still on the - * same screen - */ - i = xinerama_screen; - } - - /* set drwcX and drwcY to the right values */ - drwcX = drwcX - screens[i].x_org; - drwcY = drwcY - screens[i].y_org; - XFree(screens); - } -#endif + update_xinerama_info(); + drwcX -= xinerama_x; + drwcY -= xinerama_y; if (vo_panscan > 0.0f && vo_fs) { diff --git a/libvo/x11_common.c b/libvo/x11_common.c index f2e659d3b6..b8446c94f9 100644 --- a/libvo/x11_common.c +++ b/libvo/x11_common.c @@ -526,6 +526,12 @@ static void vo_x11_putkey_ext(struct vo *vo, int keysym) struct mp_fifo *f = vo->key_fifo; switch (keysym) { + case XF86XK_MenuKB: + mplayer_put_key(f, KEY_MENU); + break; + case XF86XK_AudioPlay: + mplayer_put_key(f, KEY_PLAY); + break; case XF86XK_AudioPause: mplayer_put_key(f, KEY_PAUSE); break; @@ -538,6 +544,9 @@ static void vo_x11_putkey_ext(struct vo *vo, int keysym) case XF86XK_AudioNext: mplayer_put_key(f, KEY_NEXT); break; + case XF86XK_AudioMute: + mplayer_put_key(f, KEY_MUTE); + break; case XF86XK_AudioLowerVolume: mplayer_put_key(f, KEY_VOLUME_DOWN); break; diff --git a/libvo/x11_common.h b/libvo/x11_common.h index b3066b300a..70f1231a7d 100644 --- a/libvo/x11_common.h +++ b/libvo/x11_common.h @@ -4,6 +4,8 @@ #include <X11/Xlib.h> #include <X11/Xutil.h> +#include "config.h" + struct vo; struct vo_x11_state { @@ -58,6 +60,10 @@ struct vo_x11_state { Atom XAWM_DELETE_WINDOW; }; +#if defined(CONFIG_GL) || defined(CONFIG_X11) || defined(CONFIG_XV) +#define X11_FULLSCREEN 1 +#endif + #ifdef X11_FULLSCREEN #define vo_wm_LAYER 1 |