summaryrefslogtreecommitdiffstats
path: root/libvo
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2008-10-25 05:12:34 +0300
committerUoti Urpala <uau@glyph.nonexistent.invalid>2008-10-25 05:12:34 +0300
commit030130942562bb7b84eeba53e0226abed5a63a4c (patch)
tree9b49208facf2801369c9d2d7b3e7af11fab36829 /libvo
parent562d86d95cbba67cb58358f6fc334553a467dee7 (diff)
parent15a80092161a1cd305f8005c780c744416a5252b (diff)
downloadmpv-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.c24
-rw-r--r--libvo/osd_template.c42
-rw-r--r--libvo/video_out.c2
-rw-r--r--libvo/vo_cvidix.c11
-rw-r--r--libvo/vo_directx.c2
-rw-r--r--libvo/vo_dxr2.c3
-rw-r--r--libvo/vo_gl2.c2
-rw-r--r--libvo/vo_sdl.c2
-rw-r--r--libvo/vo_winvidix.c1
-rw-r--r--libvo/vo_x11.c8
-rw-r--r--libvo/vo_xvidix.c41
-rw-r--r--libvo/x11_common.c9
-rw-r--r--libvo/x11_common.h6
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