[prev in list] [next in list] [prev in thread] [next in thread]
List: xine-devel
Subject: [xine-devel] [PATCH] Create secondary buffer with correct
From: Matthias Ringwald <mringwal () inf ! ethz ! ch>
Date: 2008-10-30 21:00:31
Message-ID: 28914B44-CE3B-4FEA-A0E8-6FCC5A36798D () inf ! ethz ! ch
[Download RAW message or body]
# HG changeset patch
# User Matthias Ringwald <mringwal@inf.ethz.ch>
# Date 1225400256 -3600
# Node ID a8966d431c955ad70c121488492eddb354fd11de
# Parent 15453fe24c4bd590d017d9cddd213e716eb947be
Create secondary buffer with correct pixelformat
If neither YV12 nor YUV2 format is supported by DirectX, a secondary
buffer
with the same pixelformat as the primary buffer is used. However, the
pixel
format of the primary was not passed to CreateSurface, instead a 16 bit
pixelformat was created, which is the reason why the video was broken on
24bit or 32bit desktops.
diff -r 15453fe24c4b -r a8966d431c95 src/video_out/video_out_directx.c
--- a/src/video_out/video_out_directx.c Sun Oct 19 16:55:34 2008 +0200
+++ b/src/video_out/video_out_directx.c Thu Oct 30 21:57:36 2008 +0100
@@ -117,7 +117,7 @@
yuv2rgb_t *yuv2rgb; /* used for format
conversion */
int mode; /* rgb mode */
int bytespp; /* rgb bits per pixel */
-
+ DDPIXELFORMAT primary_pixel_format;
alphablend_t alphablend_extra_data;
} win32_driver_t;
@@ -367,8 +367,9 @@
lprintf("CreateSecondary() - Falling back to back buffer same as
primary\n");
lprintf("CreateSecondary() - act_format = (NATIVE) %d\n",
IMGFMT_NATIVE);
- ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
+ ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT |
DDSD_PIXELFORMAT;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY;
+ ddsd.ddpfPixelFormat = win32_driver->primary_pixel_format;
win32_driver->act_format = IMGFMT_NATIVE;
if( IDirectDraw_CreateSurface( win32_driver->ddobj, &ddsd,
&win32_driver->secondary, 0 ) == DD_OK )
@@ -429,6 +430,10 @@
Error( 0, "IDirectDrawSurface_GetPixelFormat
( CheckPixelFormat ) : error 0x%lx", result );
return 0;
}
+
+ /* store pixel format for CreateSecondary */
+
+ win32_driver->primary_pixel_format = ddpf;
/* TODO : support paletized video modes */
@@ -478,6 +483,7 @@
win32_driver->mode = MODE_15_BGR;
}
+ lprintf("win32 mode: %u\n", win32_driver->mode);
return TRUE;
}
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
xine-devel mailing list
xine-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xine-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic