]> git.sesse.net Git - vlc/blobdiff - plugins/directx/vout_directx.h
* ALL: the first libvlc commit.
[vlc] / plugins / directx / vout_directx.h
index e7a2031c9c103b00a4f30b7211c0e44ca0193888..bf5280806ce687d2ac624100c1110fc43d40121c 100644 (file)
@@ -2,7 +2,7 @@
  * vout_directx.h: Windows DirectX video output header file
  *****************************************************************************
  * Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: vout_directx.h,v 1.1 2001/07/11 14:26:19 gbazin Exp $
+ * $Id: vout_directx.h,v 1.7 2002/06/01 12:31:58 sam Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
  * This structure is part of the video output thread descriptor.
  * It describes the DirectX specific properties of an output thread.
  *****************************************************************************/
-typedef struct vout_sys_s
+struct vout_sys_s
 {
 
     LPDIRECTDRAW2        p_ddobject;                    /* DirectDraw object */
     LPDIRECTDRAWSURFACE3 p_display;                        /* Display device */
-    LPDIRECTDRAWSURFACE3 p_surface;    /* surface where we display the video */
+    LPDIRECTDRAWSURFACE3 p_current_surface;   /* surface currently displayed */
     LPDIRECTDRAWCLIPPER  p_clipper;             /* clipper used for blitting */
     HINSTANCE            hddraw_dll;       /* handle of the opened ddraw dll */
     HBRUSH               hbrush;           /* window backgound brush (color) */
     HWND                 hwnd;                  /* Handle of the main window */
 
-    int         i_image_width;                  /* size of the decoded image */
-    int         i_image_height;
-    int         i_window_width;               /* size of the displayed image */
-    int         i_window_height;
+    vlc_bool_t   b_using_overlay;         /* Are we using an overlay surface */
+    vlc_bool_t   b_use_sysmem;   /* Should we use system memory for surfaces */
+    vlc_bool_t   b_hw_yuv;    /* Should we use hardware YUV->RGB conversions */
 
-    int         i_colorkey;          /* colorkey used to display the overlay */
-    boolean_t   b_display_enabled;
-    boolean_t   b_cursor;
+    /* size of the display */
+    RECT         rect_display;
+    int          i_display_depth;
+
+    /* Window position and size */
+    int          i_window_x;
+    int          i_window_y;
+    int          i_window_width;
+    int          i_window_height;
+
+    /* Coordinates of src and dest images (used when blitting to display) */
+    RECT         rect_src;
+    RECT         rect_src_clipped;
+    RECT         rect_dest;
+    RECT         rect_dest_clipped;
 
-    u16         i_changes;              /* changes made to the video display */
+    /* DDraw capabilities */
+    int          b_caps_overlay_clipping;
 
-    boolean_t   b_cursor_autohidden;
-    mtime_t     i_lastmoved;
+    int          i_rgb_colorkey;      /* colorkey in RGB used by the overlay */
+    int          i_colorkey;                 /* colorkey used by the overlay */
+    volatile u16 i_changes;             /* changes made to the video display */
 
-    char       *p_directx_buf[2];                      /* Buffer information */
+    /* Mouse */
+    volatile vlc_bool_t b_cursor_hidden;
+    volatile mtime_t    i_lastmoved;
 
     vlc_thread_t event_thread_id;                            /* event thread */
     vlc_mutex_t  event_thread_lock;             /* lock for the event thread */
     vlc_cond_t   event_thread_wait;
 
-    int          i_event_thread_status;         /* DirectXEventThread status */
-    boolean_t    b_event_thread_die;        /* flag to kill the event thread */
+    volatile int i_event_thread_status;         /* DirectXEventThread status */
+    volatile vlc_bool_t b_event_thread_die; /* flag to kill the event thread */
+};
 
-} vout_sys_t;
+/*****************************************************************************
+ * picture_sys_t: direct buffer method descriptor
+ *****************************************************************************
+ * This structure is part of the picture descriptor, it describes the
+ * DirectX specific properties of a direct buffer.
+ *****************************************************************************/
+struct picture_sys_s
+{
+    LPDIRECTDRAWSURFACE3 p_surface;
+    DDSURFACEDESC        ddsd;
+    LPDIRECTDRAWSURFACE3 p_front_surface;
+};
 
 /*****************************************************************************
  * Prototypes from vout_directx.c
@@ -72,3 +99,9 @@ typedef struct vout_sys_s
  * Prototypes from vout_events.c
  *****************************************************************************/
 void DirectXEventThread ( vout_thread_t *p_vout );
+void DirectXUpdateOverlay( vout_thread_t *p_vout );
+
+/*****************************************************************************
+ * Constants
+ *****************************************************************************/
+#define WM_VLC_HIDE_MOUSE WM_APP