Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Pristine Unix sources for OpenCV 2.3.1

  • Loading branch information...
commit 48005303be34c9ee8a4c9f9c4dfdc4b38d8dc597 0 parents
@hungc hungc authored
Showing with 47,361 additions and 0 deletions.
  1. +18 −0 3rdparty/CMakeLists.txt
  2. +20 −0 3rdparty/ffmpeg/CMakeLists.txt
  3. +1 −0  3rdparty/ffmpeg/ffopencv.c
  4. +2 −0  3rdparty/ffmpeg/make.bat
  5. +44 −0 3rdparty/ffmpeg/readme.txt
  6. +34 −0 3rdparty/ilmimf/LICENSE
  7. +123 −0 3rdparty/ilmimf/README
  8. +110 −0 3rdparty/include/dshow/_mingw_dxhelper.h
  9. +33 −0 3rdparty/include/dshow/_mingw_unicode.h
  10. +1,290 −0 3rdparty/include/dshow/amvideo.h
  11. +31 −0 3rdparty/include/dshow/audevcod.h
  12. +32 −0 3rdparty/include/dshow/bdatypes.h
  13. +1,467 −0 3rdparty/include/dshow/control.h
  14. +2,712 −0 3rdparty/include/dshow/ddraw.h
  15. +61 −0 3rdparty/include/dshow/dshow.h
  16. +1,199 −0 3rdparty/include/dshow/dsound.h
  17. +75 −0 3rdparty/include/dshow/dvdmedia.h
  18. +169 −0 3rdparty/include/dshow/errors.h
  19. +68 −0 3rdparty/include/dshow/evcode.h
  20. +191 −0 3rdparty/include/dshow/ksuuids.h
  21. +9,392 −0 3rdparty/include/dshow/strmif.h
  22. +368 −0 3rdparty/include/dshow/uuids.h
  23. +4,254 −0 3rdparty/include/ffmpeg_/libavcodec/avcodec.h
  24. +99 −0 3rdparty/include/ffmpeg_/libavcodec/avfft.h
  25. +68 −0 3rdparty/include/ffmpeg_/libavcodec/dxva2.h
  26. +34 −0 3rdparty/include/ffmpeg_/libavcodec/opt.h
  27. +167 −0 3rdparty/include/ffmpeg_/libavcodec/vaapi.h
  28. +88 −0 3rdparty/include/ffmpeg_/libavcodec/vdpau.h
  29. +72 −0 3rdparty/include/ffmpeg_/libavcodec/version.h
  30. +151 −0 3rdparty/include/ffmpeg_/libavcodec/xvmc.h
  31. +63 −0 3rdparty/include/ffmpeg_/libavdevice/avdevice.h
  32. +1,618 −0 3rdparty/include/ffmpeg_/libavformat/avformat.h
  33. +635 −0 3rdparty/include/ffmpeg_/libavformat/avio.h
  34. +81 −0 3rdparty/include/ffmpeg_/libavformat/version.h
  35. +42 −0 3rdparty/include/ffmpeg_/libavutil/adler32.h
  36. +47 −0 3rdparty/include/ffmpeg_/libavutil/aes.h
  37. +134 −0 3rdparty/include/ffmpeg_/libavutil/attributes.h
  38. +95 −0 3rdparty/include/ffmpeg_/libavutil/audioconvert.h
  39. +66 −0 3rdparty/include/ffmpeg_/libavutil/avassert.h
  40. +6 −0 3rdparty/include/ffmpeg_/libavutil/avconfig.h
  41. +133 −0 3rdparty/include/ffmpeg_/libavutil/avstring.h
  42. +134 −0 3rdparty/include/ffmpeg_/libavutil/avutil.h
  43. +54 −0 3rdparty/include/ffmpeg_/libavutil/base64.h
  44. +124 −0 3rdparty/include/ffmpeg_/libavutil/bswap.h
  45. +387 −0 3rdparty/include/ffmpeg_/libavutil/common.h
  46. +61 −0 3rdparty/include/ffmpeg_/libavutil/cpu.h
  47. +44 −0 3rdparty/include/ffmpeg_/libavutil/crc.h
  48. +81 −0 3rdparty/include/ffmpeg_/libavutil/dict.h
  49. +68 −0 3rdparty/include/ffmpeg_/libavutil/error.h
  50. +146 −0 3rdparty/include/ffmpeg_/libavutil/eval.h
  51. +116 −0 3rdparty/include/ffmpeg_/libavutil/fifo.h
  52. +52 −0 3rdparty/include/ffmpeg_/libavutil/file.h
  53. +130 −0 3rdparty/include/ffmpeg_/libavutil/imgutils.h
  54. +40 −0 3rdparty/include/ffmpeg_/libavutil/intfloat_readwrite.h
  55. +522 −0 3rdparty/include/ffmpeg_/libavutil/intreadwrite.h
  56. +62 −0 3rdparty/include/ffmpeg_/libavutil/lfg.h
  57. +167 −0 3rdparty/include/ffmpeg_/libavutil/log.h
  58. +66 −0 3rdparty/include/ffmpeg_/libavutil/lzo.h
  59. +112 −0 3rdparty/include/ffmpeg_/libavutil/mathematics.h
  60. +36 −0 3rdparty/include/ffmpeg_/libavutil/md5.h
  61. +135 −0 3rdparty/include/ffmpeg_/libavutil/mem.h
  62. +243 −0 3rdparty/include/ffmpeg_/libavutil/opt.h
  63. +117 −0 3rdparty/include/ffmpeg_/libavutil/parseutils.h
  64. +175 −0 3rdparty/include/ffmpeg_/libavutil/pixdesc.h
  65. +188 −0 3rdparty/include/ffmpeg_/libavutil/pixfmt.h
  66. +31 −0 3rdparty/include/ffmpeg_/libavutil/random_seed.h
  67. +135 −0 3rdparty/include/ffmpeg_/libavutil/rational.h
  68. +125 −0 3rdparty/include/ffmpeg_/libavutil/samplefmt.h
  69. +56 −0 3rdparty/include/ffmpeg_/libavutil/sha.h
  70. +57 −0 3rdparty/include/ffmpeg_/libavutil/sha1.h
  71. +371 −0 3rdparty/include/ffmpeg_/libswscale/swscale.h
  72. +301 −0 3rdparty/include/msc_inttypes.h
  73. +219 −0 3rdparty/include/msc_stdint.h
  74. +58 −0 3rdparty/libjasper/CMakeLists.txt
  75. +51 −0 3rdparty/libjasper/LICENSE
  76. +22 −0 3rdparty/libjasper/README
  77. +1,282 −0 3rdparty/libjasper/jas_cm.c
  78. +137 −0 3rdparty/libjasper/jas_debug.c
  79. +168 −0 3rdparty/libjasper/jas_getopt.c
  80. +1,722 −0 3rdparty/libjasper/jas_icc.c
  81. +517 −0 3rdparty/libjasper/jas_iccdata.c
  82. +1,445 −0 3rdparty/libjasper/jas_image.c
  83. +162 −0 3rdparty/libjasper/jas_init.c
  84. +131 −0 3rdparty/libjasper/jas_malloc.c
  85. +454 −0 3rdparty/libjasper/jas_seq.c
  86. +1,150 −0 3rdparty/libjasper/jas_stream.c
  87. +96 −0 3rdparty/libjasper/jas_string.c
  88. +149 −0 3rdparty/libjasper/jas_tmr.c
  89. +237 −0 3rdparty/libjasper/jas_tvp.c
  90. +67 −0 3rdparty/libjasper/jas_version.c
  91. +266 −0 3rdparty/libjasper/jasper/jas_cm.h
  92. +173 −0 3rdparty/libjasper/jasper/jas_config.h
  93. +172 −0 3rdparty/libjasper/jasper/jas_config.h.in
  94. +97 −0 3rdparty/libjasper/jasper/jas_config2.h
  95. +114 −0 3rdparty/libjasper/jasper/jas_debug.h
  96. +358 −0 3rdparty/libjasper/jasper/jas_fix.h
  97. +131 −0 3rdparty/libjasper/jasper/jas_getopt.h
  98. +407 −0 3rdparty/libjasper/jasper/jas_icc.h
  99. +564 −0 3rdparty/libjasper/jasper/jas_image.h
  100. +83 −0 3rdparty/libjasper/jasper/jas_init.h
  101. +124 −0 3rdparty/libjasper/jasper/jas_malloc.h
  102. +117 −0 3rdparty/libjasper/jasper/jas_math.h
  103. +301 −0 3rdparty/libjasper/jasper/jas_seq.h
  104. +464 −0 3rdparty/libjasper/jasper/jas_stream.h
  105. +95 −0 3rdparty/libjasper/jasper/jas_string.h
  106. +103 −0 3rdparty/libjasper/jasper/jas_tmr.h
  107. +151 −0 3rdparty/libjasper/jasper/jas_tvp.h
  108. +228 −0 3rdparty/libjasper/jasper/jas_types.h
  109. +120 −0 3rdparty/libjasper/jasper/jas_version.h
  110. +93 −0 3rdparty/libjasper/jasper/jasper.h
  111. +921 −0 3rdparty/libjasper/jp2_cod.c
  112. +304 −0 3rdparty/libjasper/jp2_cod.h
  113. +603 −0 3rdparty/libjasper/jp2_dec.c
  114. +85 −0 3rdparty/libjasper/jp2_dec.h
  115. +436 −0 3rdparty/libjasper/jp2_enc.c
  116. +440 −0 3rdparty/libjasper/jpc_bs.c
  117. +231 −0 3rdparty/libjasper/jpc_bs.h
  118. +78 −0 3rdparty/libjasper/jpc_cod.h
  119. +1,643 −0 3rdparty/libjasper/jpc_cs.c
  120. +763 −0 3rdparty/libjasper/jpc_cs.h
Sorry, we could not display the entire diff because too many files (2,455) changed.
18 3rdparty/CMakeLists.txt
@@ -0,0 +1,18 @@
+if(NOT ZLIB_FOUND)
+ add_subdirectory(zlib)
+endif()
+if(WITH_JASPER AND NOT JASPER_FOUND)
+ add_subdirectory(libjasper)
+endif()
+if(WITH_JPEG AND NOT JPEG_FOUND)
+ add_subdirectory(libjpeg)
+endif()
+if(WITH_PNG AND NOT PNG_FOUND)
+ add_subdirectory(libpng)
+endif()
+if(WITH_TIFF AND NOT TIFF_FOUND)
+ add_subdirectory(libtiff)
+endif()
+if(WIN32)
+ add_subdirectory(ffmpeg)
+endif()
20 3rdparty/ffmpeg/CMakeLists.txt
@@ -0,0 +1,20 @@
+project(opencv_ffmpeg)
+
+if(MSVC64 OR MINGW64)
+ set(FFMPEG_SUFFIX _64)
+endif()
+
+set(module_bare_name "opencv_ffmpeg${FFMPEG_SUFFIX}.dll")
+set(module_name "${CMAKE_CURRENT_SOURCE_DIR}/${module_bare_name}")
+
+get_target_property(bin_dir opencv_traincascade LOCATION)
+get_filename_component(bin_dir ${bin_dir} PATH)
+
+message(STATUS "ffmpeg output dir: ${bin_dir}")
+
+add_custom_target(opencv_ffmpeg ALL
+ COMMAND ${CMAKE_COMMAND} -E copy
+ ${module_name} ${bin_dir}/${module_bare_name}
+ COMMENT "Copying ${module_name} to the output directory")
+
+install(FILES ${module_name} DESTINATION bin COMPONENT main)
1  3rdparty/ffmpeg/ffopencv.c
@@ -0,0 +1 @@
+#include "cap_ffmpeg_impl.hpp"
2  3rdparty/ffmpeg/make.bat
@@ -0,0 +1,2 @@
+set path=c:\dev\msys32\bin;%path% & gcc -Wall -shared -o opencv_ffmpeg.dll -O2 -x c++ -I../include -I../include/ffmpeg_ -I../../modules/highgui/src ffopencv.c -L../lib -lavformat -lavcodec -lavdevice -lswscale -lavutil -lwsock32
+set path=c:\dev\msys64\bin;%path% & gcc -m64 -Wall -shared -o opencv_ffmpeg_64.dll -O2 -x c++ -I../include -I../include/ffmpeg_ -I../../modules/highgui/src ffopencv.c -L../lib -lavformat64 -lavcodec64 -lavdevice64 -lswscale64 -lavutil64 -lavcore64 -lwsock32 -lws2_32
44 3rdparty/ffmpeg/readme.txt
@@ -0,0 +1,44 @@
+The build script is to be fixed.
+Right now it assumes that 32-bit MinGW is in the system path and
+64-bit mingw is installed to c:\Apps\MinGW64.
+
+It is important that gcc is used, not g++!
+Otherwise the produced DLL will likely be dependent on libgcc_s_dw2-1.dll or similar DLL.
+While we want to make the DLLs with minimum dependencies: Win32 libraries + msvcrt.dll.
+
+ffopencv.c is really a C++ source, hence -x c++ is used.
+
+How to update opencv_ffmpeg.dll and opencv_ffmpeg_64.dll when a new version of FFMPEG is release?
+
+1. Install 32-bit MinGW + MSYS from
+ http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get-inst/
+ Let's assume, it's installed in C:\MSYS32.
+2. Install 64-bit MinGW. http://mingw-w64.sourceforge.net/
+ Let's assume, it's installed in C:\MSYS64
+3. Copy C:\MSYS32\msys to C:\MSYS64\msys. Edit C:\MSYS64\msys\etc\fstab, change C:\MSYS32 to C:\MSYS64.
+
+4. Now you have working MSYS32 and MSYS64 environments.
+ Launch, one by one, C:\MSYS32\msys\msys.bat and C:\MSYS64\msys\msys.bat to create your home directories.
+
+4. Download ffmpeg-x.y.z.tar.gz (where x.y.z denotes the actual ffmpeg version).
+ Copy it to C:\MSYS{32|64}\msys\home\<loginname> directory.
+
+5. To build 32-bit ffmpeg libraries, run C:\MSYS32\msys\msys.bat and type the following commands:
+
+ 5.1. tar -xzf ffmpeg-x.y.z.tar.gz
+ 5.2. mkdir build
+ 5.3. cd build
+ 5.4. ../ffmpeg-x.y.z/configure --enable-w32threads
+ 5.5. make
+ 5.6. make install
+ 5.7. cd /local/lib
+ 5.8. strip -g *.a
+
+6. Then repeat the same for 64-bit case. The output libs: libavcodec.a etc. need to be renamed to libavcodec64.a etc.
+
+7. Then, copy all those libs to <opencv>\3rdparty\lib\, copy the headers to <opencv>\3rdparty\include\ffmpeg_.
+
+8. Then, go to <opencv>\3rdparty\ffmpeg, edit make.bat
+ (change paths to the actual paths to your msys32 and msys64 distributions) and then run make.bat
+
+
34 3rdparty/ilmimf/LICENSE
@@ -0,0 +1,34 @@
+Copyright (c) 2004, Industrial Light & Magic, a division of Lucasfilm
+Entertainment Company Ltd. Portions contributed and copyright held by
+others as indicated. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.
+
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided with
+ the distribution.
+
+ * Neither the name of Industrial Light & Magic nor the names of
+ any other contributors to this software may be used to endorse or
+ promote products derived from this software without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
123 3rdparty/ilmimf/README
@@ -0,0 +1,123 @@
+ABOUT THE OPENEXR LIBRARIES
+----------------------------
+
+Half is a class that encapsulates our 16-bit floating-point format.
+
+IlmThread is a thread abstraction library for use with IlmImf. It
+currently supports pthreads and Windows threads.
+
+IlmImf is our "EXR" file format for storing 16-bit FP images.
+
+Imath is a math library. IlmImf only uses a subset of it,
+but we're releasing the full library because it's easier for us to
+maintain, and we think it'll be useful to others.
+
+Iex is an exception-handling library.
+
+See the IlmImfExamples directory for some code that demonstrates how
+to use the IlmImf library to read and write OpenEXR files. The doc
+directory contains some high-level documentation and history about the
+OpenEXR format.
+
+If you have questions about using the OpenEXR libraries, you may want
+to join our developer mailing list. See http://www.openexr.com for
+details.
+
+
+LICENSE
+-------
+
+The OpenEXR source code distribution is free software. See the file
+named COPYING (included in this distribution) for details.
+
+
+WHAT'S INCLUDED
+---------------
+
+Besides the core OpenEXR libraries, the release includes several
+utilities for reading, writing, viewing, and manipulating OpenEXR
+images. These include:
+
+ * exrdisplay, an image viewer.
+ * exrheader, a utility for dumping header information.
+ * exrstdattr, a utility for modifying OpenEXR standard attributes.
+ * exrmaketiled, for generating tiled and rip/mipmapped images.
+ * exrenvmap, for creating OpenEXR environment maps.
+ * exrmakepreview, for creating preview images for OpenEXR files.
+
+exrdisplay requires FLTK 1.1 or greater and OpenGL. exrdisplay
+supports fragment shaders if you have the Nvidia Cg SDK and a graphics
+card capable of running fp30 profile fragment shaders. See
+exrdisplay/README for details.
+
+We have also released an OpenEXR display driver for Renderman, a file
+I/O plugin for Shake, and a file I/O plugin for Adobe Photoshop (on
+both Windows and MacOS). These are packaged separately. Go to
+http://www.openexr.com to download them. NOTE: the most recent
+versions of these applications now have native support for OpenEXR, so
+you should only use our open-source versions of the plugins if you
+have an older version of the application.
+
+
+BUILDING OPENEXR
+----------------
+
+Building OpenEXR requires the zlib library. If you want to build the
+'exrdisplay' image viewer, you'll also need FLTK 1.1, but this program
+is not required to use OpenEXR's libraries in your application.
+exrdisplay can also accelerate the display of OpenEXR images if you
+have the NVIDIA Cg SDK.
+
+Your OS distribution may already include these libraries, or supply
+packages for them. That is the preferred way to obtain them for use
+with OpenEXR. If not, you can obtain the source code for zlib and
+FLTK from:
+
+ http://www.zlib.net
+ http://www.fltk.org
+
+and you can download the NVIDIA Cg SDK from
+http://developer.nvidia.com.
+
+If you're building OpenEXR on a Windows platform, see README.win32 for
+instructions on how to build OpenEXR. The remainder of this file
+applies only to GNU/Linux or other UNIX-like systems.
+
+After installing the required libraries, to build OpenEXR on
+GNU/Linux or other UNIX-like systems, do this:
+
+./configure
+make
+make install
+
+unless you obtained OpenEXR directly from CVS, in which case you
+should first read README.CVS.
+
+If you have the Nvidia Cg SDK and you want to build support for
+fragment shaders into exrdisplay, specify the path to the SDK using
+the "--with-cg-prefix" flag. There are some additional compile-time
+configuration options available; type `./configure --help` for more
+information.
+
+See README.OSX for details on building OpenEXR in MacOS X.
+
+Do `make check` to run the OpenEXR confidence tests. They should all
+pass; if you find a test that does not pass on your system, please let
+us know.
+
+Other UNIX variants haven't been tested, but should be easy to build.
+Let us know if you're having problems porting OpenEXR to a particular
+platform.
+
+All include files needed to use the OpenEXR libraries are installed in the
+OpenEXR subdirectory of the install prefix, e.g. /usr/local/include/OpenEXR.
+
+
+USING OPENEXR IN YOUR APPLICATIONS
+----------------------------------
+
+On systems with support for pkg-config, use `pkg-config --cflags
+OpenEXR` for the C++ flags required to compile against OpenEXR
+headers; and `pkg-config --libs OpenEXR` for the linker flags required
+to link against OpenEXR libraries.
+
110 3rdparty/include/dshow/_mingw_dxhelper.h
@@ -0,0 +1,110 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
+#define NONAMELESSUNION 1
+#endif
+#if defined(NONAMELESSSTRUCT) && \
+ !defined(NONAMELESSUNION)
+#define NONAMELESSUNION 1
+#endif
+#if defined(NONAMELESSUNION) && \
+ !defined(NONAMELESSSTRUCT)
+#define NONAMELESSSTRUCT 1
+#endif
+
+#ifndef __ANONYMOUS_DEFINED
+#define __ANONYMOUS_DEFINED
+#if defined(__GNUC__) || defined(__GNUG__)
+#define _ANONYMOUS_UNION __extension__
+#define _ANONYMOUS_STRUCT __extension__
+#else
+#define _ANONYMOUS_UNION
+#define _ANONYMOUS_STRUCT
+#endif
+#ifndef NONAMELESSUNION
+#define _UNION_NAME(x)
+#define _STRUCT_NAME(x)
+#else /* NONAMELESSUNION */
+#define _UNION_NAME(x) x
+#define _STRUCT_NAME(x) x
+#endif
+#endif /* __ANONYMOUS_DEFINED */
+
+#ifndef DUMMYUNIONNAME
+# ifdef NONAMELESSUNION
+# define DUMMYUNIONNAME u
+# define DUMMYUNIONNAME1 u1 /* Wine uses this variant */
+# define DUMMYUNIONNAME2 u2
+# define DUMMYUNIONNAME3 u3
+# define DUMMYUNIONNAME4 u4
+# define DUMMYUNIONNAME5 u5
+# define DUMMYUNIONNAME6 u6
+# define DUMMYUNIONNAME7 u7
+# define DUMMYUNIONNAME8 u8
+# define DUMMYUNIONNAME9 u9
+# else /* NONAMELESSUNION */
+# define DUMMYUNIONNAME
+# define DUMMYUNIONNAME1 /* Wine uses this variant */
+# define DUMMYUNIONNAME2
+# define DUMMYUNIONNAME3
+# define DUMMYUNIONNAME4
+# define DUMMYUNIONNAME5
+# define DUMMYUNIONNAME6
+# define DUMMYUNIONNAME7
+# define DUMMYUNIONNAME8
+# define DUMMYUNIONNAME9
+# endif
+#endif /* DUMMYUNIONNAME */
+
+#if !defined(DUMMYUNIONNAME1) /* MinGW does not define this one */
+# ifdef NONAMELESSUNION
+# define DUMMYUNIONNAME1 u1 /* Wine uses this variant */
+# else
+# define DUMMYUNIONNAME1 /* Wine uses this variant */
+# endif
+#endif /* DUMMYUNIONNAME1 */
+
+#ifndef DUMMYSTRUCTNAME
+# ifdef NONAMELESSUNION
+# define DUMMYSTRUCTNAME s
+# define DUMMYSTRUCTNAME1 s1 /* Wine uses this variant */
+# define DUMMYSTRUCTNAME2 s2
+# define DUMMYSTRUCTNAME3 s3
+# define DUMMYSTRUCTNAME4 s4
+# define DUMMYSTRUCTNAME5 s5
+# else
+# define DUMMYSTRUCTNAME
+# define DUMMYSTRUCTNAME1 /* Wine uses this variant */
+# define DUMMYSTRUCTNAME2
+# define DUMMYSTRUCTNAME3
+# define DUMMYSTRUCTNAME4
+# define DUMMYSTRUCTNAME5
+# endif
+#endif /* DUMMYSTRUCTNAME */
+
+/* These are for compatibility with the Wine source tree */
+
+#ifndef WINELIB_NAME_AW
+# ifdef __MINGW_NAME_AW
+# define WINELIB_NAME_AW __MINGW_NAME_AW
+# else
+# ifdef UNICODE
+# define WINELIB_NAME_AW(func) func##W
+# else
+# define WINELIB_NAME_AW(func) func##A
+# endif
+# endif
+#endif /* WINELIB_NAME_AW */
+
+#ifndef DECL_WINELIB_TYPE_AW
+# ifdef __MINGW_TYPEDEF_AW
+# define DECL_WINELIB_TYPE_AW __MINGW_TYPEDEF_AW
+# else
+# define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type;
+# endif
+#endif /* DECL_WINELIB_TYPE_AW */
+
33 3rdparty/include/dshow/_mingw_unicode.h
@@ -0,0 +1,33 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#if !defined(_INC_CRT_UNICODE_MACROS)
+/* _INC_CRT_UNICODE_MACROS defined based on UNICODE flag */
+
+#if defined(UNICODE)
+# define _INC_CRT_UNICODE_MACROS 1
+# define __MINGW_NAME_AW(func) func##W
+# define __MINGW_NAME_AW_EXT(func,ext) func##W##ext
+# define __MINGW_NAME_UAW(func) func##_W
+# define __MINGW_NAME_UAW_EXT(func,ext) func##_W_##ext
+# define __MINGW_STRING_AW(str) L##str /* same as TEXT() from winnt.h */
+# define __MINGW_PROCNAMEEXT_AW "W"
+#else
+# define _INC_CRT_UNICODE_MACROS 2
+# define __MINGW_NAME_AW(func) func##A
+# define __MINGW_NAME_AW_EXT(func,ext) func##A##ext
+# define __MINGW_NAME_UAW(func) func##_A
+# define __MINGW_NAME_UAW_EXT(func,ext) func##_A_##ext
+# define __MINGW_STRING_AW(str) str /* same as TEXT() from winnt.h */
+# define __MINGW_PROCNAMEEXT_AW "A"
+#endif
+
+#define __MINGW_TYPEDEF_AW(type) \
+ typedef __MINGW_NAME_AW(type) type;
+#define __MINGW_TYPEDEF_UAW(type) \
+ typedef __MINGW_NAME_UAW(type) type;
+
+#endif /* !defined(_INC_CRT_UNICODE_MACROS) */
1,290 3rdparty/include/dshow/amvideo.h
@@ -0,0 +1,1290 @@
+/*** Autogenerated by WIDL from amvideo.idl - Do not edit ***/
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef __WIDL_AMVIDEO_H
+#define __WIDL_AMVIDEO_H
+
+/* Forward declarations */
+
+#ifndef __IDirectDrawVideo_FWD_DEFINED__
+#define __IDirectDrawVideo_FWD_DEFINED__
+typedef interface IDirectDrawVideo IDirectDrawVideo;
+#endif
+
+#ifndef __IQualProp_FWD_DEFINED__
+#define __IQualProp_FWD_DEFINED__
+typedef interface IQualProp IQualProp;
+#endif
+
+#ifndef __IFullScreenVideo_FWD_DEFINED__
+#define __IFullScreenVideo_FWD_DEFINED__
+typedef interface IFullScreenVideo IFullScreenVideo;
+#endif
+
+#ifndef __IFullScreenVideoEx_FWD_DEFINED__
+#define __IFullScreenVideoEx_FWD_DEFINED__
+typedef interface IFullScreenVideoEx IFullScreenVideoEx;
+#endif
+
+#ifndef __IBaseVideoMixer_FWD_DEFINED__
+#define __IBaseVideoMixer_FWD_DEFINED__
+typedef interface IBaseVideoMixer IBaseVideoMixer;
+#endif
+
+/* Headers for imported files */
+
+#include <objidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if 0
+typedef void *LPDIRECTDRAW;
+typedef void DDSURFACEDESC;
+typedef void DDCAPS;
+typedef DWORD RGBQUAD;
+typedef LONGLONG REFERENCE_TIME;
+typedef struct __WIDL_amvideo_generated_name_00000000 {
+ DWORD biSize;
+ LONG biWidth;
+ LONG biHeight;
+ WORD biPlanes;
+ WORD biBitCount;
+ DWORD biCompression;
+ DWORD biSizeImage;
+ LONG biXPelsPerMeter;
+ LONG biYPelsPerMeter;
+ DWORD biClrUsed;
+ DWORD biClrImportant;
+} BITMAPINFOHEADER;
+typedef struct __WIDL_amvideo_generated_name_00000000 *PBITMAPINFOHEADER;
+typedef struct __WIDL_amvideo_generated_name_00000000 *LPBITMAPINFOHEADER;
+#endif
+#include <dshow/ddraw.h>
+#define AMDDS_NONE 0x00
+#define AMDDS_DCIPS 0x01
+#define AMDDS_PS 0x02
+#define AMDDS_RGBOVR 0x04
+#define AMDDS_YUVOVR 0x08
+#define AMDDS_RGBOFF 0x10
+#define AMDDS_YUVOFF 0x20
+#define AMDDS_RGBFLP 0x40
+#define AMDDS_YUVFLP 0x80
+#define AMDDS_ALL 0xFF
+#define AMDDS_DEFAULT AMDDS_ALL
+#define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP)
+#define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP)
+#define AMDSS_PRIMARY (AMDDS_DCIPS | AMDDS_PS)
+/*****************************************************************************
+ * IDirectDrawVideo interface
+ */
+#ifndef __IDirectDrawVideo_INTERFACE_DEFINED__
+#define __IDirectDrawVideo_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IDirectDrawVideo : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetSwitches(
+ DWORD *pSwitches) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSwitches(
+ DWORD Switches) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCaps(
+ DDCAPS *pCaps) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetEmulatedCaps(
+ DDCAPS *pCaps) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSurfaceDesc(
+ DDSURFACEDESC *pSurfaceDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFourCCCodes(
+ DWORD *pCount,
+ DWORD *pCodes) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDirectDraw(
+ LPDIRECTDRAW pDirectDraw) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDirectDraw(
+ LPDIRECTDRAW *ppDirectDraw) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSurfaceType(
+ DWORD *pSurfaceType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDefault(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UseScanLine(
+ LONG UseScanLine) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CanUseScanLine(
+ LONG *UseScanLine) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UseOverlayStretch(
+ LONG UseOverlayStretch) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CanUseOverlayStretch(
+ LONG *UseOverlayStretch) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UseWhenFullScreen(
+ LONG UseWhenFullScreen) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WillUseFullScreen(
+ LONG *UseWhenFullScreen) = 0;
+
+};
+#else
+typedef struct IDirectDrawVideoVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IDirectDrawVideo* This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IDirectDrawVideo* This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IDirectDrawVideo* This);
+
+ /*** IDirectDrawVideo methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetSwitches)(
+ IDirectDrawVideo* This,
+ DWORD *pSwitches);
+
+ HRESULT (STDMETHODCALLTYPE *SetSwitches)(
+ IDirectDrawVideo* This,
+ DWORD Switches);
+
+ HRESULT (STDMETHODCALLTYPE *GetCaps)(
+ IDirectDrawVideo* This,
+ DDCAPS *pCaps);
+
+ HRESULT (STDMETHODCALLTYPE *GetEmulatedCaps)(
+ IDirectDrawVideo* This,
+ DDCAPS *pCaps);
+
+ HRESULT (STDMETHODCALLTYPE *GetSurfaceDesc)(
+ IDirectDrawVideo* This,
+ DDSURFACEDESC *pSurfaceDesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetFourCCCodes)(
+ IDirectDrawVideo* This,
+ DWORD *pCount,
+ DWORD *pCodes);
+
+ HRESULT (STDMETHODCALLTYPE *SetDirectDraw)(
+ IDirectDrawVideo* This,
+ LPDIRECTDRAW pDirectDraw);
+
+ HRESULT (STDMETHODCALLTYPE *GetDirectDraw)(
+ IDirectDrawVideo* This,
+ LPDIRECTDRAW *ppDirectDraw);
+
+ HRESULT (STDMETHODCALLTYPE *GetSurfaceType)(
+ IDirectDrawVideo* This,
+ DWORD *pSurfaceType);
+
+ HRESULT (STDMETHODCALLTYPE *SetDefault)(
+ IDirectDrawVideo* This);
+
+ HRESULT (STDMETHODCALLTYPE *UseScanLine)(
+ IDirectDrawVideo* This,
+ LONG UseScanLine);
+
+ HRESULT (STDMETHODCALLTYPE *CanUseScanLine)(
+ IDirectDrawVideo* This,
+ LONG *UseScanLine);
+
+ HRESULT (STDMETHODCALLTYPE *UseOverlayStretch)(
+ IDirectDrawVideo* This,
+ LONG UseOverlayStretch);
+
+ HRESULT (STDMETHODCALLTYPE *CanUseOverlayStretch)(
+ IDirectDrawVideo* This,
+ LONG *UseOverlayStretch);
+
+ HRESULT (STDMETHODCALLTYPE *UseWhenFullScreen)(
+ IDirectDrawVideo* This,
+ LONG UseWhenFullScreen);
+
+ HRESULT (STDMETHODCALLTYPE *WillUseFullScreen)(
+ IDirectDrawVideo* This,
+ LONG *UseWhenFullScreen);
+
+ END_INTERFACE
+} IDirectDrawVideoVtbl;
+interface IDirectDrawVideo {
+ CONST_VTBL IDirectDrawVideoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IDirectDrawVideo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDirectDrawVideo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDirectDrawVideo_Release(This) (This)->lpVtbl->Release(This)
+/*** IDirectDrawVideo methods ***/
+#define IDirectDrawVideo_GetSwitches(This,pSwitches) (This)->lpVtbl->GetSwitches(This,pSwitches)
+#define IDirectDrawVideo_SetSwitches(This,Switches) (This)->lpVtbl->SetSwitches(This,Switches)
+#define IDirectDrawVideo_GetCaps(This,pCaps) (This)->lpVtbl->GetCaps(This,pCaps)
+#define IDirectDrawVideo_GetEmulatedCaps(This,pCaps) (This)->lpVtbl->GetEmulatedCaps(This,pCaps)
+#define IDirectDrawVideo_GetSurfaceDesc(This,pSurfaceDesc) (This)->lpVtbl->GetSurfaceDesc(This,pSurfaceDesc)
+#define IDirectDrawVideo_GetFourCCCodes(This,pCount,pCodes) (This)->lpVtbl->GetFourCCCodes(This,pCount,pCodes)
+#define IDirectDrawVideo_SetDirectDraw(This,pDirectDraw) (This)->lpVtbl->SetDirectDraw(This,pDirectDraw)
+#define IDirectDrawVideo_GetDirectDraw(This,ppDirectDraw) (This)->lpVtbl->GetDirectDraw(This,ppDirectDraw)
+#define IDirectDrawVideo_GetSurfaceType(This,pSurfaceType) (This)->lpVtbl->GetSurfaceType(This,pSurfaceType)
+#define IDirectDrawVideo_SetDefault(This) (This)->lpVtbl->SetDefault(This)
+#define IDirectDrawVideo_UseScanLine(This,UseScanLine) (This)->lpVtbl->UseScanLine(This,UseScanLine)
+#define IDirectDrawVideo_CanUseScanLine(This,UseScanLine) (This)->lpVtbl->CanUseScanLine(This,UseScanLine)
+#define IDirectDrawVideo_UseOverlayStretch(This,UseOverlayStretch) (This)->lpVtbl->UseOverlayStretch(This,UseOverlayStretch)
+#define IDirectDrawVideo_CanUseOverlayStretch(This,UseOverlayStretch) (This)->lpVtbl->CanUseOverlayStretch(This,UseOverlayStretch)
+#define IDirectDrawVideo_UseWhenFullScreen(This,UseWhenFullScreen) (This)->lpVtbl->UseWhenFullScreen(This,UseWhenFullScreen)
+#define IDirectDrawVideo_WillUseFullScreen(This,UseWhenFullScreen) (This)->lpVtbl->WillUseFullScreen(This,UseWhenFullScreen)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetSwitches_Proxy(
+ IDirectDrawVideo* This,
+ DWORD *pSwitches);
+void __RPC_STUB IDirectDrawVideo_GetSwitches_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_SetSwitches_Proxy(
+ IDirectDrawVideo* This,
+ DWORD Switches);
+void __RPC_STUB IDirectDrawVideo_SetSwitches_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetCaps_Proxy(
+ IDirectDrawVideo* This,
+ DDCAPS *pCaps);
+void __RPC_STUB IDirectDrawVideo_GetCaps_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetEmulatedCaps_Proxy(
+ IDirectDrawVideo* This,
+ DDCAPS *pCaps);
+void __RPC_STUB IDirectDrawVideo_GetEmulatedCaps_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetSurfaceDesc_Proxy(
+ IDirectDrawVideo* This,
+ DDSURFACEDESC *pSurfaceDesc);
+void __RPC_STUB IDirectDrawVideo_GetSurfaceDesc_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetFourCCCodes_Proxy(
+ IDirectDrawVideo* This,
+ DWORD *pCount,
+ DWORD *pCodes);
+void __RPC_STUB IDirectDrawVideo_GetFourCCCodes_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_SetDirectDraw_Proxy(
+ IDirectDrawVideo* This,
+ LPDIRECTDRAW pDirectDraw);
+void __RPC_STUB IDirectDrawVideo_SetDirectDraw_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetDirectDraw_Proxy(
+ IDirectDrawVideo* This,
+ LPDIRECTDRAW *ppDirectDraw);
+void __RPC_STUB IDirectDrawVideo_GetDirectDraw_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_GetSurfaceType_Proxy(
+ IDirectDrawVideo* This,
+ DWORD *pSurfaceType);
+void __RPC_STUB IDirectDrawVideo_GetSurfaceType_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_SetDefault_Proxy(
+ IDirectDrawVideo* This);
+void __RPC_STUB IDirectDrawVideo_SetDefault_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_UseScanLine_Proxy(
+ IDirectDrawVideo* This,
+ LONG UseScanLine);
+void __RPC_STUB IDirectDrawVideo_UseScanLine_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_CanUseScanLine_Proxy(
+ IDirectDrawVideo* This,
+ LONG *UseScanLine);
+void __RPC_STUB IDirectDrawVideo_CanUseScanLine_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_UseOverlayStretch_Proxy(
+ IDirectDrawVideo* This,
+ LONG UseOverlayStretch);
+void __RPC_STUB IDirectDrawVideo_UseOverlayStretch_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_CanUseOverlayStretch_Proxy(
+ IDirectDrawVideo* This,
+ LONG *UseOverlayStretch);
+void __RPC_STUB IDirectDrawVideo_CanUseOverlayStretch_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_UseWhenFullScreen_Proxy(
+ IDirectDrawVideo* This,
+ LONG UseWhenFullScreen);
+void __RPC_STUB IDirectDrawVideo_UseWhenFullScreen_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IDirectDrawVideo_WillUseFullScreen_Proxy(
+ IDirectDrawVideo* This,
+ LONG *UseWhenFullScreen);
+void __RPC_STUB IDirectDrawVideo_WillUseFullScreen_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+
+#endif /* __IDirectDrawVideo_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IQualProp interface
+ */
+#ifndef __IQualProp_INTERFACE_DEFINED__
+#define __IQualProp_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IQualProp : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE get_FramesDroppedInRenderer(
+ int *pcFrames) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_FramesDrawn(
+ int *pcFramesDrawn) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_AvgFrameRate(
+ int *piAvgFrameRate) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Jitter(
+ int *iJitter) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_AvgSyncOffset(
+ int *piAvg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_DevSyncOffset(
+ int *piDev) = 0;
+
+};
+#else
+typedef struct IQualPropVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IQualProp* This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IQualProp* This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IQualProp* This);
+
+ /*** IQualProp methods ***/
+ HRESULT (STDMETHODCALLTYPE *get_FramesDroppedInRenderer)(
+ IQualProp* This,
+ int *pcFrames);
+
+ HRESULT (STDMETHODCALLTYPE *get_FramesDrawn)(
+ IQualProp* This,
+ int *pcFramesDrawn);
+
+ HRESULT (STDMETHODCALLTYPE *get_AvgFrameRate)(
+ IQualProp* This,
+ int *piAvgFrameRate);
+
+ HRESULT (STDMETHODCALLTYPE *get_Jitter)(
+ IQualProp* This,
+ int *iJitter);
+
+ HRESULT (STDMETHODCALLTYPE *get_AvgSyncOffset)(
+ IQualProp* This,
+ int *piAvg);
+
+ HRESULT (STDMETHODCALLTYPE *get_DevSyncOffset)(
+ IQualProp* This,
+ int *piDev);
+
+ END_INTERFACE
+} IQualPropVtbl;
+interface IQualProp {
+ CONST_VTBL IQualPropVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IQualProp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IQualProp_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IQualProp_Release(This) (This)->lpVtbl->Release(This)
+/*** IQualProp methods ***/
+#define IQualProp_get_FramesDroppedInRenderer(This,pcFrames) (This)->lpVtbl->get_FramesDroppedInRenderer(This,pcFrames)
+#define IQualProp_get_FramesDrawn(This,pcFramesDrawn) (This)->lpVtbl->get_FramesDrawn(This,pcFramesDrawn)
+#define IQualProp_get_AvgFrameRate(This,piAvgFrameRate) (This)->lpVtbl->get_AvgFrameRate(This,piAvgFrameRate)
+#define IQualProp_get_Jitter(This,iJitter) (This)->lpVtbl->get_Jitter(This,iJitter)
+#define IQualProp_get_AvgSyncOffset(This,piAvg) (This)->lpVtbl->get_AvgSyncOffset(This,piAvg)
+#define IQualProp_get_DevSyncOffset(This,piDev) (This)->lpVtbl->get_DevSyncOffset(This,piDev)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IQualProp_get_FramesDroppedInRenderer_Proxy(
+ IQualProp* This,
+ int *pcFrames);
+void __RPC_STUB IQualProp_get_FramesDroppedInRenderer_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IQualProp_get_FramesDrawn_Proxy(
+ IQualProp* This,
+ int *pcFramesDrawn);
+void __RPC_STUB IQualProp_get_FramesDrawn_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IQualProp_get_AvgFrameRate_Proxy(
+ IQualProp* This,
+ int *piAvgFrameRate);
+void __RPC_STUB IQualProp_get_AvgFrameRate_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IQualProp_get_Jitter_Proxy(
+ IQualProp* This,
+ int *iJitter);
+void __RPC_STUB IQualProp_get_Jitter_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IQualProp_get_AvgSyncOffset_Proxy(
+ IQualProp* This,
+ int *piAvg);
+void __RPC_STUB IQualProp_get_AvgSyncOffset_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IQualProp_get_DevSyncOffset_Proxy(
+ IQualProp* This,
+ int *piDev);
+void __RPC_STUB IQualProp_get_DevSyncOffset_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+
+#endif /* __IQualProp_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFullScreenVideo interface
+ */
+#ifndef __IFullScreenVideo_INTERFACE_DEFINED__
+#define __IFullScreenVideo_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IFullScreenVideo : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE CountModes(
+ LONG *pModes) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetModeInfo(
+ LONG Mode,
+ LONG *pWidth,
+ LONG *pHeight,
+ LONG *pDepth) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCurrentMode(
+ LONG *pMode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsModeAvailable(
+ LONG Mode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsModeEnabled(
+ LONG Mode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetEnabled(
+ LONG Mode,
+ LONG bEnabled) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetClipFactor(
+ LONG *pClipFactor) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetClipFactor(
+ LONG ClipFactor) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMessageDrain(
+ HWND hwnd) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMessageDrain(
+ HWND *hwnd) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMonitor(
+ LONG Monitor) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMonitor(
+ LONG *Monitor) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE HideOnDeactivate(
+ LONG Hide) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsHideOnDeactivate(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCaption(
+ BSTR strCaption) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCaption(
+ BSTR *pstrCaption) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDefault(
+ ) = 0;
+
+};
+#else
+typedef struct IFullScreenVideoVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IFullScreenVideo* This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IFullScreenVideo* This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IFullScreenVideo* This);
+
+ /*** IFullScreenVideo methods ***/
+ HRESULT (STDMETHODCALLTYPE *CountModes)(
+ IFullScreenVideo* This,
+ LONG *pModes);
+
+ HRESULT (STDMETHODCALLTYPE *GetModeInfo)(
+ IFullScreenVideo* This,
+ LONG Mode,
+ LONG *pWidth,
+ LONG *pHeight,
+ LONG *pDepth);
+
+ HRESULT (STDMETHODCALLTYPE *GetCurrentMode)(
+ IFullScreenVideo* This,
+ LONG *pMode);
+
+ HRESULT (STDMETHODCALLTYPE *IsModeAvailable)(
+ IFullScreenVideo* This,
+ LONG Mode);
+
+ HRESULT (STDMETHODCALLTYPE *IsModeEnabled)(
+ IFullScreenVideo* This,
+ LONG Mode);
+
+ HRESULT (STDMETHODCALLTYPE *SetEnabled)(
+ IFullScreenVideo* This,
+ LONG Mode,
+ LONG bEnabled);
+
+ HRESULT (STDMETHODCALLTYPE *GetClipFactor)(
+ IFullScreenVideo* This,
+ LONG *pClipFactor);
+
+ HRESULT (STDMETHODCALLTYPE *SetClipFactor)(
+ IFullScreenVideo* This,
+ LONG ClipFactor);
+
+ HRESULT (STDMETHODCALLTYPE *SetMessageDrain)(
+ IFullScreenVideo* This,
+ HWND hwnd);
+
+ HRESULT (STDMETHODCALLTYPE *GetMessageDrain)(
+ IFullScreenVideo* This,
+ HWND *hwnd);
+
+ HRESULT (STDMETHODCALLTYPE *SetMonitor)(
+ IFullScreenVideo* This,
+ LONG Monitor);
+
+ HRESULT (STDMETHODCALLTYPE *GetMonitor)(
+ IFullScreenVideo* This,
+ LONG *Monitor);
+
+ HRESULT (STDMETHODCALLTYPE *HideOnDeactivate)(
+ IFullScreenVideo* This,
+ LONG Hide);
+
+ HRESULT (STDMETHODCALLTYPE *IsHideOnDeactivate)(
+ IFullScreenVideo* This);
+
+ HRESULT (STDMETHODCALLTYPE *SetCaption)(
+ IFullScreenVideo* This,
+ BSTR strCaption);
+
+ HRESULT (STDMETHODCALLTYPE *GetCaption)(
+ IFullScreenVideo* This,
+ BSTR *pstrCaption);
+
+ HRESULT (STDMETHODCALLTYPE *SetDefault)(
+ IFullScreenVideo* This);
+
+ END_INTERFACE
+} IFullScreenVideoVtbl;
+interface IFullScreenVideo {
+ CONST_VTBL IFullScreenVideoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IFullScreenVideo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFullScreenVideo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFullScreenVideo_Release(This) (This)->lpVtbl->Release(This)
+/*** IFullScreenVideo methods ***/
+#define IFullScreenVideo_CountModes(This,pModes) (This)->lpVtbl->CountModes(This,pModes)
+#define IFullScreenVideo_GetModeInfo(This,Mode,pWidth,pHeight,pDepth) (This)->lpVtbl->GetModeInfo(This,Mode,pWidth,pHeight,pDepth)
+#define IFullScreenVideo_GetCurrentMode(This,pMode) (This)->lpVtbl->GetCurrentMode(This,pMode)
+#define IFullScreenVideo_IsModeAvailable(This,Mode) (This)->lpVtbl->IsModeAvailable(This,Mode)
+#define IFullScreenVideo_IsModeEnabled(This,Mode) (This)->lpVtbl->IsModeEnabled(This,Mode)
+#define IFullScreenVideo_SetEnabled(This,Mode,bEnabled) (This)->lpVtbl->SetEnabled(This,Mode,bEnabled)
+#define IFullScreenVideo_GetClipFactor(This,pClipFactor) (This)->lpVtbl->GetClipFactor(This,pClipFactor)
+#define IFullScreenVideo_SetClipFactor(This,ClipFactor) (This)->lpVtbl->SetClipFactor(This,ClipFactor)
+#define IFullScreenVideo_SetMessageDrain(This,hwnd) (This)->lpVtbl->SetMessageDrain(This,hwnd)
+#define IFullScreenVideo_GetMessageDrain(This,hwnd) (This)->lpVtbl->GetMessageDrain(This,hwnd)
+#define IFullScreenVideo_SetMonitor(This,Monitor) (This)->lpVtbl->SetMonitor(This,Monitor)
+#define IFullScreenVideo_GetMonitor(This,Monitor) (This)->lpVtbl->GetMonitor(This,Monitor)
+#define IFullScreenVideo_HideOnDeactivate(This,Hide) (This)->lpVtbl->HideOnDeactivate(This,Hide)
+#define IFullScreenVideo_IsHideOnDeactivate(This) (This)->lpVtbl->IsHideOnDeactivate(This)
+#define IFullScreenVideo_SetCaption(This,strCaption) (This)->lpVtbl->SetCaption(This,strCaption)
+#define IFullScreenVideo_GetCaption(This,pstrCaption) (This)->lpVtbl->GetCaption(This,pstrCaption)
+#define IFullScreenVideo_SetDefault(This) (This)->lpVtbl->SetDefault(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_CountModes_Proxy(
+ IFullScreenVideo* This,
+ LONG *pModes);
+void __RPC_STUB IFullScreenVideo_CountModes_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetModeInfo_Proxy(
+ IFullScreenVideo* This,
+ LONG Mode,
+ LONG *pWidth,
+ LONG *pHeight,
+ LONG *pDepth);
+void __RPC_STUB IFullScreenVideo_GetModeInfo_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetCurrentMode_Proxy(
+ IFullScreenVideo* This,
+ LONG *pMode);
+void __RPC_STUB IFullScreenVideo_GetCurrentMode_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_IsModeAvailable_Proxy(
+ IFullScreenVideo* This,
+ LONG Mode);
+void __RPC_STUB IFullScreenVideo_IsModeAvailable_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_IsModeEnabled_Proxy(
+ IFullScreenVideo* This,
+ LONG Mode);
+void __RPC_STUB IFullScreenVideo_IsModeEnabled_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetEnabled_Proxy(
+ IFullScreenVideo* This,
+ LONG Mode,
+ LONG bEnabled);
+void __RPC_STUB IFullScreenVideo_SetEnabled_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetClipFactor_Proxy(
+ IFullScreenVideo* This,
+ LONG *pClipFactor);
+void __RPC_STUB IFullScreenVideo_GetClipFactor_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetClipFactor_Proxy(
+ IFullScreenVideo* This,
+ LONG ClipFactor);
+void __RPC_STUB IFullScreenVideo_SetClipFactor_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetMessageDrain_Proxy(
+ IFullScreenVideo* This,
+ HWND hwnd);
+void __RPC_STUB IFullScreenVideo_SetMessageDrain_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetMessageDrain_Proxy(
+ IFullScreenVideo* This,
+ HWND *hwnd);
+void __RPC_STUB IFullScreenVideo_GetMessageDrain_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetMonitor_Proxy(
+ IFullScreenVideo* This,
+ LONG Monitor);
+void __RPC_STUB IFullScreenVideo_SetMonitor_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetMonitor_Proxy(
+ IFullScreenVideo* This,
+ LONG *Monitor);
+void __RPC_STUB IFullScreenVideo_GetMonitor_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_HideOnDeactivate_Proxy(
+ IFullScreenVideo* This,
+ LONG Hide);
+void __RPC_STUB IFullScreenVideo_HideOnDeactivate_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_IsHideOnDeactivate_Proxy(
+ IFullScreenVideo* This);
+void __RPC_STUB IFullScreenVideo_IsHideOnDeactivate_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetCaption_Proxy(
+ IFullScreenVideo* This,
+ BSTR strCaption);
+void __RPC_STUB IFullScreenVideo_SetCaption_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_GetCaption_Proxy(
+ IFullScreenVideo* This,
+ BSTR *pstrCaption);
+void __RPC_STUB IFullScreenVideo_GetCaption_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideo_SetDefault_Proxy(
+ IFullScreenVideo* This);
+void __RPC_STUB IFullScreenVideo_SetDefault_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+
+#endif /* __IFullScreenVideo_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFullScreenVideoEx interface
+ */
+#ifndef __IFullScreenVideoEx_INTERFACE_DEFINED__
+#define __IFullScreenVideoEx_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IFullScreenVideoEx : public IFullScreenVideo
+{
+ virtual HRESULT STDMETHODCALLTYPE SetAcceleratorTable(
+ HWND hwnd,
+ HACCEL hAccel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAcceleratorTable(
+ HWND *phwnd,
+ HACCEL *phAccel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE KeepPixelAspectRatio(
+ LONG KeepAspect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsKeepPixelAspectRatio(
+ LONG *pKeepAspect) = 0;
+
+};
+#else
+typedef struct IFullScreenVideoExVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IFullScreenVideoEx* This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IFullScreenVideoEx* This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IFullScreenVideoEx* This);
+
+ /*** IFullScreenVideo methods ***/
+ HRESULT (STDMETHODCALLTYPE *CountModes)(
+ IFullScreenVideoEx* This,
+ LONG *pModes);
+
+ HRESULT (STDMETHODCALLTYPE *GetModeInfo)(
+ IFullScreenVideoEx* This,
+ LONG Mode,
+ LONG *pWidth,
+ LONG *pHeight,
+ LONG *pDepth);
+
+ HRESULT (STDMETHODCALLTYPE *GetCurrentMode)(
+ IFullScreenVideoEx* This,
+ LONG *pMode);
+
+ HRESULT (STDMETHODCALLTYPE *IsModeAvailable)(
+ IFullScreenVideoEx* This,
+ LONG Mode);
+
+ HRESULT (STDMETHODCALLTYPE *IsModeEnabled)(
+ IFullScreenVideoEx* This,
+ LONG Mode);
+
+ HRESULT (STDMETHODCALLTYPE *SetEnabled)(
+ IFullScreenVideoEx* This,
+ LONG Mode,
+ LONG bEnabled);
+
+ HRESULT (STDMETHODCALLTYPE *GetClipFactor)(
+ IFullScreenVideoEx* This,
+ LONG *pClipFactor);
+
+ HRESULT (STDMETHODCALLTYPE *SetClipFactor)(
+ IFullScreenVideoEx* This,
+ LONG ClipFactor);
+
+ HRESULT (STDMETHODCALLTYPE *SetMessageDrain)(
+ IFullScreenVideoEx* This,
+ HWND hwnd);
+
+ HRESULT (STDMETHODCALLTYPE *GetMessageDrain)(
+ IFullScreenVideoEx* This,
+ HWND *hwnd);
+
+ HRESULT (STDMETHODCALLTYPE *SetMonitor)(
+ IFullScreenVideoEx* This,
+ LONG Monitor);
+
+ HRESULT (STDMETHODCALLTYPE *GetMonitor)(
+ IFullScreenVideoEx* This,
+ LONG *Monitor);
+
+ HRESULT (STDMETHODCALLTYPE *HideOnDeactivate)(
+ IFullScreenVideoEx* This,
+ LONG Hide);
+
+ HRESULT (STDMETHODCALLTYPE *IsHideOnDeactivate)(
+ IFullScreenVideoEx* This);
+
+ HRESULT (STDMETHODCALLTYPE *SetCaption)(
+ IFullScreenVideoEx* This,
+ BSTR strCaption);
+
+ HRESULT (STDMETHODCALLTYPE *GetCaption)(
+ IFullScreenVideoEx* This,
+ BSTR *pstrCaption);
+
+ HRESULT (STDMETHODCALLTYPE *SetDefault)(
+ IFullScreenVideoEx* This);
+
+ /*** IFullScreenVideoEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetAcceleratorTable)(
+ IFullScreenVideoEx* This,
+ HWND hwnd,
+ HACCEL hAccel);
+
+ HRESULT (STDMETHODCALLTYPE *GetAcceleratorTable)(
+ IFullScreenVideoEx* This,
+ HWND *phwnd,
+ HACCEL *phAccel);
+
+ HRESULT (STDMETHODCALLTYPE *KeepPixelAspectRatio)(
+ IFullScreenVideoEx* This,
+ LONG KeepAspect);
+
+ HRESULT (STDMETHODCALLTYPE *IsKeepPixelAspectRatio)(
+ IFullScreenVideoEx* This,
+ LONG *pKeepAspect);
+
+ END_INTERFACE
+} IFullScreenVideoExVtbl;
+interface IFullScreenVideoEx {
+ CONST_VTBL IFullScreenVideoExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IFullScreenVideoEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFullScreenVideoEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFullScreenVideoEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IFullScreenVideo methods ***/
+#define IFullScreenVideoEx_CountModes(This,pModes) (This)->lpVtbl->CountModes(This,pModes)
+#define IFullScreenVideoEx_GetModeInfo(This,Mode,pWidth,pHeight,pDepth) (This)->lpVtbl->GetModeInfo(This,Mode,pWidth,pHeight,pDepth)
+#define IFullScreenVideoEx_GetCurrentMode(This,pMode) (This)->lpVtbl->GetCurrentMode(This,pMode)
+#define IFullScreenVideoEx_IsModeAvailable(This,Mode) (This)->lpVtbl->IsModeAvailable(This,Mode)
+#define IFullScreenVideoEx_IsModeEnabled(This,Mode) (This)->lpVtbl->IsModeEnabled(This,Mode)
+#define IFullScreenVideoEx_SetEnabled(This,Mode,bEnabled) (This)->lpVtbl->SetEnabled(This,Mode,bEnabled)
+#define IFullScreenVideoEx_GetClipFactor(This,pClipFactor) (This)->lpVtbl->GetClipFactor(This,pClipFactor)
+#define IFullScreenVideoEx_SetClipFactor(This,ClipFactor) (This)->lpVtbl->SetClipFactor(This,ClipFactor)
+#define IFullScreenVideoEx_SetMessageDrain(This,hwnd) (This)->lpVtbl->SetMessageDrain(This,hwnd)
+#define IFullScreenVideoEx_GetMessageDrain(This,hwnd) (This)->lpVtbl->GetMessageDrain(This,hwnd)
+#define IFullScreenVideoEx_SetMonitor(This,Monitor) (This)->lpVtbl->SetMonitor(This,Monitor)
+#define IFullScreenVideoEx_GetMonitor(This,Monitor) (This)->lpVtbl->GetMonitor(This,Monitor)
+#define IFullScreenVideoEx_HideOnDeactivate(This,Hide) (This)->lpVtbl->HideOnDeactivate(This,Hide)
+#define IFullScreenVideoEx_IsHideOnDeactivate(This) (This)->lpVtbl->IsHideOnDeactivate(This)
+#define IFullScreenVideoEx_SetCaption(This,strCaption) (This)->lpVtbl->SetCaption(This,strCaption)
+#define IFullScreenVideoEx_GetCaption(This,pstrCaption) (This)->lpVtbl->GetCaption(This,pstrCaption)
+#define IFullScreenVideoEx_SetDefault(This) (This)->lpVtbl->SetDefault(This)
+/*** IFullScreenVideoEx methods ***/
+#define IFullScreenVideoEx_SetAcceleratorTable(This,hwnd,hAccel) (This)->lpVtbl->SetAcceleratorTable(This,hwnd,hAccel)
+#define IFullScreenVideoEx_GetAcceleratorTable(This,phwnd,phAccel) (This)->lpVtbl->GetAcceleratorTable(This,phwnd,phAccel)
+#define IFullScreenVideoEx_KeepPixelAspectRatio(This,KeepAspect) (This)->lpVtbl->KeepPixelAspectRatio(This,KeepAspect)
+#define IFullScreenVideoEx_IsKeepPixelAspectRatio(This,pKeepAspect) (This)->lpVtbl->IsKeepPixelAspectRatio(This,pKeepAspect)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IFullScreenVideoEx_SetAcceleratorTable_Proxy(
+ IFullScreenVideoEx* This,
+ HWND hwnd,
+ HACCEL hAccel);
+void __RPC_STUB IFullScreenVideoEx_SetAcceleratorTable_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideoEx_GetAcceleratorTable_Proxy(
+ IFullScreenVideoEx* This,
+ HWND *phwnd,
+ HACCEL *phAccel);
+void __RPC_STUB IFullScreenVideoEx_GetAcceleratorTable_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideoEx_KeepPixelAspectRatio_Proxy(
+ IFullScreenVideoEx* This,
+ LONG KeepAspect);
+void __RPC_STUB IFullScreenVideoEx_KeepPixelAspectRatio_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IFullScreenVideoEx_IsKeepPixelAspectRatio_Proxy(
+ IFullScreenVideoEx* This,
+ LONG *pKeepAspect);
+void __RPC_STUB IFullScreenVideoEx_IsKeepPixelAspectRatio_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+
+#endif /* __IFullScreenVideoEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBaseVideoMixer interface
+ */
+#ifndef __IBaseVideoMixer_INTERFACE_DEFINED__
+#define __IBaseVideoMixer_INTERFACE_DEFINED__
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IBaseVideoMixer : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SetLeadPin(
+ int iPin) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetLeadPin(
+ int *piPin) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetInputPinCount(
+ int *piPinCount) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsUsingClock(
+ int *pbValue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetUsingClock(
+ int bValue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetClockPeriod(
+ int *pbValue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetClockPeriod(
+ int bValue) = 0;
+
+};
+#else
+typedef struct IBaseVideoMixerVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBaseVideoMixer* This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBaseVideoMixer* This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBaseVideoMixer* This);
+
+ /*** IBaseVideoMixer methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetLeadPin)(
+ IBaseVideoMixer* This,
+ int iPin);
+
+ HRESULT (STDMETHODCALLTYPE *GetLeadPin)(
+ IBaseVideoMixer* This,
+ int *piPin);
+
+ HRESULT (STDMETHODCALLTYPE *GetInputPinCount)(
+ IBaseVideoMixer* This,
+ int *piPinCount);
+
+ HRESULT (STDMETHODCALLTYPE *IsUsingClock)(
+ IBaseVideoMixer* This,
+ int *pbValue);
+
+ HRESULT (STDMETHODCALLTYPE *SetUsingClock)(
+ IBaseVideoMixer* This,
+ int bValue);
+
+ HRESULT (STDMETHODCALLTYPE *GetClockPeriod)(
+ IBaseVideoMixer* This,
+ int *pbValue);
+
+ HRESULT (STDMETHODCALLTYPE *SetClockPeriod)(
+ IBaseVideoMixer* This,
+ int bValue);
+
+ END_INTERFACE
+} IBaseVideoMixerVtbl;
+interface IBaseVideoMixer {
+ CONST_VTBL IBaseVideoMixerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IBaseVideoMixer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBaseVideoMixer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBaseVideoMixer_Release(This) (This)->lpVtbl->Release(This)
+/*** IBaseVideoMixer methods ***/
+#define IBaseVideoMixer_SetLeadPin(This,iPin) (This)->lpVtbl->SetLeadPin(This,iPin)
+#define IBaseVideoMixer_GetLeadPin(This,piPin) (This)->lpVtbl->GetLeadPin(This,piPin)
+#define IBaseVideoMixer_GetInputPinCount(This,piPinCount) (This)->lpVtbl->GetInputPinCount(This,piPinCount)
+#define IBaseVideoMixer_IsUsingClock(This,pbValue) (This)->lpVtbl->IsUsingClock(This,pbValue)
+#define IBaseVideoMixer_SetUsingClock(This,bValue) (This)->lpVtbl->SetUsingClock(This,bValue)
+#define IBaseVideoMixer_GetClockPeriod(This,pbValue) (This)->lpVtbl->GetClockPeriod(This,pbValue)
+#define IBaseVideoMixer_SetClockPeriod(This,bValue) (This)->lpVtbl->SetClockPeriod(This,bValue)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_SetLeadPin_Proxy(
+ IBaseVideoMixer* This,
+ int iPin);
+void __RPC_STUB IBaseVideoMixer_SetLeadPin_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_GetLeadPin_Proxy(
+ IBaseVideoMixer* This,
+ int *piPin);
+void __RPC_STUB IBaseVideoMixer_GetLeadPin_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_GetInputPinCount_Proxy(
+ IBaseVideoMixer* This,
+ int *piPinCount);
+void __RPC_STUB IBaseVideoMixer_GetInputPinCount_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_IsUsingClock_Proxy(
+ IBaseVideoMixer* This,
+ int *pbValue);
+void __RPC_STUB IBaseVideoMixer_IsUsingClock_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_SetUsingClock_Proxy(
+ IBaseVideoMixer* This,
+ int bValue);
+void __RPC_STUB IBaseVideoMixer_SetUsingClock_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_GetClockPeriod_Proxy(
+ IBaseVideoMixer* This,
+ int *pbValue);
+void __RPC_STUB IBaseVideoMixer_GetClockPeriod_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IBaseVideoMixer_SetClockPeriod_Proxy(
+ IBaseVideoMixer* This,
+ int bValue);
+void __RPC_STUB IBaseVideoMixer_SetClockPeriod_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+
+#endif /* __IBaseVideoMixer_INTERFACE_DEFINED__ */
+
+#define iPALETTE_COLORS 256
+#define iEGA_COLORS 16
+#define iMASK_COLORS 3
+#define iTRUECOLOR 16
+#define iRED 0
+#define iGREEN 1
+#define iBLUE 2
+#define iPALETTE 8
+#define iMAXBITS 8
+typedef struct tag_TRUECOLORINFO {
+ DWORD dwBitMasks[3];
+ RGBQUAD bmiColors[256];
+} TRUECOLORINFO;
+typedef struct tagVIDEOINFOHEADER {
+ RECT rcSource;
+ RECT rcTarget;
+ DWORD dwBitRate;
+ DWORD dwBitErrorRate;
+ REFERENCE_TIME AvgTimePerFrame;
+ BITMAPINFOHEADER bmiHeader;
+} VIDEOINFOHEADER;
+typedef struct tagVIDEOINFO {
+ RECT rcSource;
+ RECT rcTarget;
+ DWORD dwBitRate;
+ DWORD dwBitErrorRate;
+ REFERENCE_TIME AvgTimePerFrame;
+ BITMAPINFOHEADER bmiHeader;
+ union {
+ RGBQUAD bmiColors[256];
+ DWORD dwBitMasks[3];
+ TRUECOLORINFO TrueColorInfo;
+ } DUMMYUNIONNAME;
+} VIDEOINFO;
+typedef struct tagMPEG1VIDEOINFO {
+ VIDEOINFOHEADER hdr;
+ DWORD dwStartTimeCode;
+ DWORD cbSequenceHeader;
+ BYTE bSequenceHeader[1];
+} MPEG1VIDEOINFO;
+#define MAX_SIZE_MPEG1_SEQUENCE_INFO 140
+#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
+typedef struct tagAnalogVideoInfo {
+ RECT rcSource;
+ RECT rcTarget;
+ DWORD dwActiveWidth;
+ DWORD dwActiveHeight;
+ REFERENCE_TIME AvgTimePerFrame;
+} ANALOGVIDEOINFO;
+typedef enum __WIDL_amvideo_generated_name_00000001 {
+ AM_PROPERTY_FRAMESTEP_STEP = 0x1,
+ AM_PROPERTY_FRAMESTEP_CANCEL = 0x2,
+ AM_PROPERTY_FRAMESTEP_CANSTEP = 0x3,
+ AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x4
+} AM_PROPERTY_FRAMESTEP;
+typedef struct _AM_FRAMESTEP_STEP {
+ DWORD dwFramesToStep;
+} AM_FRAMESTEP_STEP;
+/* Begin additional prototypes for all interfaces */
+
+ULONG __RPC_USER HWND_UserSize (ULONG *, ULONG, HWND *);
+unsigned char * __RPC_USER HWND_UserMarshal (ULONG *, unsigned char *, HWND *);
+unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
+void __RPC_USER HWND_UserFree (ULONG *, HWND *);
+ULONG __RPC_USER BSTR_UserSize (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void __RPC_USER BSTR_UserFree (ULONG *, BSTR *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WIDL_AMVIDEO_H */
31 3rdparty/include/dshow/audevcod.h
@@ -0,0 +1,31 @@
+#ifndef _AUDEVCOD_H
+#define _AUDEVCOD_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum _tagSND_DEVICE_ERROR {
+ SNDDEV_ERROR_Open = 1,
+ SNDDEV_ERROR_Close = 2,
+ SNDDEV_ERROR_GetCaps = 3,
+ SNDDEV_ERROR_PrepareHeader = 4,
+ SNDDEV_ERROR_UnprepareHeader = 5,
+ SNDDEV_ERROR_Reset = 6,
+ SNDDEV_ERROR_Restart = 7,
+ SNDDEV_ERROR_GetPosition = 8,
+ SNDDEV_ERROR_Write = 9,
+ SNDDEV_ERROR_Pause = 10,
+ SNDDEV_ERROR_Stop = 11,
+ SNDDEV_ERROR_Start = 12,
+ SNDDEV_ERROR_AddBuffer = 13,
+ SNDDEV_ERROR_Query = 14
+} SNDDEV_ERR;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
32 3rdparty/include/dshow/bdatypes.h
@@ -0,0 +1,32 @@
+#ifndef _BDATYPES_H
+#define _BDATYPES_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Enumerated Types */
+typedef enum {
+ MEDIA_TRANSPORT_PACKET,
+ MEDIA_ELEMENTARY_STREAM,
+ MEDIA_MPEG2_PSI,
+ MEDIA_TRANSPORT_PAYLOAD
+} MEDIA_SAMPLE_CONTENT;
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct {
+ DWORD dwOffset;
+ DWORD dwPacketLength;
+ DWORD dwStride;
+} MPEG2_TRANSPORT_STRIDE;
+typedef struct {
+ ULONG ulPID;
+ MEDIA_SAMPLE_CONTENT MediaSampleContent ;
+} PID_MAP;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
1,467 3rdparty/include/dshow/control.h
1,467 additions, 0 deletions not shown
2,712 3rdparty/include/dshow/ddraw.h
2,712 additions, 0 deletions not shown
61 3rdparty/include/dshow/dshow.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2002 Alexandre Julliard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DSHOW_INCLUDED__
+#define __DSHOW_INCLUDED__
+
+#define AM_NOVTABLE
+
+#ifndef __WINESRC__
+# include <windows.h>
+# include <windowsx.h>
+#else
+# include <windef.h>
+# include <wingdi.h>
+# include <objbase.h>
+#endif
+#include <olectl.h>
+#include <dshow/ddraw.h>
+#include <mmsystem.h>
+/* FIXME: #include <strsafe.h>*/
+
+#ifndef NUMELMS
+#define NUMELMS(array) (sizeof(array)/sizeof((array)[0]))
+#endif
+
+#include <dshow/strmif.h>
+#include <dshow/amvideo.h>
+#ifdef DSHOW_USE_AMAUDIO
+/* FIXME: #include <amaudio.h>*/
+#endif
+#include <dshow/control.h>
+#include <dshow/evcode.h>
+#include <dshow/uuids.h>
+#include <dshow/errors.h>
+/* FIXME: #include <edevdefs.h> */
+#include <dshow/audevcod.h>
+/* FIXME: #include <dvdevcod.h> */
+
+#ifndef OATRUE
+#define OATRUE (-1)
+#endif
+#ifndef OAFALSE
+#define OAFALSE (0)
+#endif
+
+#endif /* __DSHOW_INCLUDED__ */
1,199 3rdparty/include/dshow/dsound.h
@@ -0,0 +1,1199 @@
+#include <dshow/_mingw_unicode.h>
+#undef INTERFACE
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DSOUND_INCLUDED__
+#define __DSOUND_INCLUDED__
+
+#ifndef DIRECTSOUND_VERSION
+#define DIRECTSOUND_VERSION 0x0900
+#endif
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+#include <float.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#ifndef DX_SHARED_DEFINES
+
+typedef float D3DVALUE, *LPD3DVALUE;
+
+#ifndef D3DCOLOR_DEFINED
+typedef DWORD D3DCOLOR, *LPD3DCOLOR;
+#define D3DCOLOR_DEFINED
+#endif
+
+#ifndef D3DVECTOR_DEFINED
+typedef struct _D3DVECTOR {
+ float x;
+ float y;
+ float z;
+} D3DVECTOR;
+#define D3DVECTOR_DEFINED
+#endif
+
+#ifndef LPD3DVECTOR_DEFINED
+typedef D3DVECTOR *LPD3DVECTOR;
+#define LPD3DVECTOR_DEFINED
+#endif
+
+#define DX_SHARED_DEFINES
+#endif /* DX_SHARED_DEFINES */
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+DEFINE_GUID(CLSID_DirectSound, 0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
+DEFINE_GUID(CLSID_DirectSound8, 0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b);
+DEFINE_GUID(CLSID_DirectSoundCapture, 0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x08, 0x00, 0xa0, 0xc9, 0x25, 0xcd, 0x16);
+DEFINE_GUID(CLSID_DirectSoundCapture8, 0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1);
+DEFINE_GUID(CLSID_DirectSoundFullDuplex,0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d);
+
+DEFINE_GUID(IID_IDirectSound, 0x279AFA83,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
+typedef struct IDirectSound *LPDIRECTSOUND,**LPLPDIRECTSOUND;
+
+DEFINE_GUID(IID_IDirectSound8, 0xC50A7E93,0xF395,0x4834,0x9E,0xF6,0x7F,0xA9,0x9D,0xE5,0x09,0x66);
+typedef struct IDirectSound8 *LPDIRECTSOUND8,**LPLPDIRECTSOUND8;
+
+DEFINE_GUID(IID_IDirectSoundBuffer, 0x279AFA85,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
+typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER,**LPLPDIRECTSOUNDBUFFER;
+
+DEFINE_GUID(IID_IDirectSoundBuffer8, 0x6825A449,0x7524,0x4D82,0x92,0x0F,0x50,0xE3,0x6A,0xB3,0xAB,0x1E);
+typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8,**LPLPDIRECTSOUNDBUFFER8;
+
+DEFINE_GUID(IID_IDirectSoundNotify, 0xB0210783,0x89cd,0x11d0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
+typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY,**LPLPDIRECTSOUNDNOTIFY;
+#define IID_IDirectSoundNotify8 IID_IDirectSoundNotify
+
+DEFINE_GUID(IID_IDirectSound3DListener, 0x279AFA84,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
+typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER,**LPLPDIRECTSOUND3DLISTENER;
+
+DEFINE_GUID(IID_IDirectSound3DBuffer, 0x279AFA86,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
+typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER,**LPLPDIRECTSOUND3DBUFFER;
+
+DEFINE_GUID(IID_IDirectSoundCapture, 0xB0210781,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
+typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE,**LPLPDIRECTSOUNDCAPTURE;
+#define IID_IDirectSoundCapture8 IID_IDirectSoundCapture
+typedef struct IDirectSoundCapture IDirectSoundCapture8,*LPDIRECTSOUNDCAPTURE8,**LPLPDIRECTSOUNDCAPTURE8;
+
+DEFINE_GUID(IID_IDirectSoundCaptureBuffer,0xB0210782,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
+typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER,**LPLPDIRECTSOUNDCAPTUREBUFFER;
+
+DEFINE_GUID(IID_IDirectSoundCaptureBuffer8,0x00990DF4,0x0DBB,0x4872,0x83,0x3E,0x6D,0x30,0x3E,0x80,0xAE,0xB6);
+typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8,**LPLPDIRECTSOUNDCAPTUREBUFFER8;
+
+DEFINE_GUID(IID_IDirectSoundFullDuplex, 0xEDCB4C7A,0xDAAB,0x4216,0xA4,0x2E,0x6C,0x50,0x59,0x6D,0xDC,0x1D);
+typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX,**LPLPDIRECTSOUNDFULLDUPLEX;
+#define IID_IDirectSoundFullDuplex8 IID_IDirectSoundFullDuplex
+
+DEFINE_GUID(DSDEVID_DefaultPlayback, 0xDEF00000,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
+DEFINE_GUID(DSDEVID_DefaultCapture, 0xDEF00001,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
+DEFINE_GUID(DSDEVID_DefaultVoicePlayback,0xDEF00002,0x9C6D,0x47Ed,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
+DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xDEF00003,0x9C6D,0x47ED,0xAA,0xF1,0x4D,0xDA,0x8F,0x2B,0x5C,0x03);
+
+DEFINE_GUID(DSDEVID_WinePlayback, 0x40316A1D,0x605B,0xD611,0x87,0xC6,0x00,0x80,0xAD,0x00,0x02,0xFE);
+
+#define _FACDS 0x878
+#define MAKE_DSHRESULT(code) MAKE_HRESULT(1,_FACDS,code)
+
+#define DS_OK 0
+#define DS_NO_VIRTUALIZATION MAKE_HRESULT(0, _FACDS, 10)
+#define DS_INCOMPLETE MAKE_HRESULT(0, _FACDS, 20)
+#define DSERR_ALLOCATED MAKE_DSHRESULT(10)
+#define DSERR_CONTROLUNAVAIL MAKE_DSHRESULT(30)
+#define DSERR_INVALIDPARAM E_INVALIDARG
+#define DSERR_INVALIDCALL MAKE_DSHRESULT(50)
+#define DSERR_GENERIC E_FAIL
+#define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT(70)
+#define DSERR_OUTOFMEMORY E_OUTOFMEMORY
+#define DSERR_BADFORMAT MAKE_DSHRESULT(100)
+#define DSERR_UNSUPPORTED E_NOTIMPL
+#define DSERR_NODRIVER MAKE_DSHRESULT(120)
+#define DSERR_ALREADYINITIALIZED MAKE_DSHRESULT(130)
+#define DSERR_NOAGGREGATION CLASS_E_NOAGGREGATION
+#define DSERR_BUFFERLOST MAKE_DSHRESULT(150)
+#define DSERR_OTHERAPPHASPRIO MAKE_DSHRESULT(160)
+#define DSERR_UNINITIALIZED MAKE_DSHRESULT(170)
+#define DSERR_NOINTERFACE E_NOINTERFACE
+#define DSERR_ACCESSDENIED E_ACCESSDENIED
+#define DSERR_BUFFERTOOSMALL MAKE_DSHRESULT(180)
+#define DSERR_DS8_REQUIRED MAKE_DSHRESULT(190)
+#define DSERR_SENDLOOP MAKE_DSHRESULT(200)
+#define DSERR_BADSENDBUFFERGUID MAKE_DSHRESULT(210)
+#define DSERR_FXUNAVAILABLE MAKE_DSHRESULT(220)
+#define DSERR_OBJECTNOTFOUND MAKE_DSHRESULT(4449)
+
+#define DSCAPS_PRIMARYMONO 0x00000001
+#define DSCAPS_PRIMARYSTEREO 0x00000002
+#define DSCAPS_PRIMARY8BIT 0x00000004
+#define DSCAPS_PRIMARY16BIT 0x00000008
+#define DSCAPS_CONTINUOUSRATE 0x00000010
+#define DSCAPS_EMULDRIVER 0x00000020
+#define DSCAPS_CERTIFIED 0x00000040
+#define DSCAPS_SECONDARYMONO 0x00000100
+#define DSCAPS_SECONDARYSTEREO 0x00000200
+#define DSCAPS_SECONDARY8BIT 0x00000400
+#define DSCAPS_SECONDARY16BIT 0x00000800
+
+#define DSSCL_NORMAL 1
+#define DSSCL_PRIORITY 2
+#define DSSCL_EXCLUSIVE 3
+#define DSSCL_WRITEPRIMARY 4
+
+typedef struct _DSCAPS
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwMinSecondarySampleRate;
+ DWORD dwMaxSecondarySampleRate;
+ DWORD dwPrimaryBuffers;
+ DWORD dwMaxHwMixingAllBuffers;
+ DWORD dwMaxHwMixingStaticBuffers;
+ DWORD dwMaxHwMixingStreamingBuffers;
+ DWORD dwFreeHwMixingAllBuffers;
+ DWORD dwFreeHwMixingStaticBuffers;
+ DWORD dwFreeHwMixingStreamingBuffers;
+ DWORD dwMaxHw3DAllBuffers;
+ DWORD dwMaxHw3DStaticBuffers;
+ DWORD dwMaxHw3DStreamingBuffers;
+ DWORD dwFreeHw3DAllBuffers;
+ DWORD dwFreeHw3DStaticBuffers;
+ DWORD dwFreeHw3DStreamingBuffers;
+ DWORD dwTotalHwMemBytes;
+ DWORD dwFreeHwMemBytes;
+ DWORD dwMaxContigFreeHwMemBytes;
+ DWORD dwUnlockTransferRateHwBuffers;
+ DWORD dwPlayCpuOverheadSwBuffers;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+} DSCAPS,*LPDSCAPS;
+typedef const DSCAPS *LPCDSCAPS;
+
+#define DSBPLAY_LOOPING 0x00000001
+#define DSBPLAY_LOCHARDWARE 0x00000002
+#define DSBPLAY_LOCSOFTWARE 0x00000004
+#define DSBPLAY_TERMINATEBY_TIME 0x00000008
+#define DSBPLAY_TERMINATEBY_DISTANCE 0x000000010
+#define DSBPLAY_TERMINATEBY_PRIORITY 0x000000020
+
+#define DSBSTATUS_PLAYING 0x00000001
+#define DSBSTATUS_BUFFERLOST 0x00000002
+#define DSBSTATUS_LOOPING 0x00000004
+#define DSBSTATUS_LOCHARDWARE 0x00000008
+#define DSBSTATUS_LOCSOFTWARE 0x00000010
+#define DSBSTATUS_TERMINATED 0x00000020
+
+#define DSBLOCK_FROMWRITECURSOR 0x00000001
+#define DSBLOCK_ENTIREBUFFER 0x00000002
+
+#define DSBCAPS_PRIMARYBUFFER 0x00000001
+#define DSBCAPS_STATIC 0x00000002
+#define DSBCAPS_LOCHARDWARE 0x00000004
+#define DSBCAPS_LOCSOFTWARE 0x00000008
+#define DSBCAPS_CTRL3D 0x00000010
+#define DSBCAPS_CTRLFREQUENCY 0x00000020
+#define DSBCAPS_CTRLPAN 0x00000040
+#define DSBCAPS_CTRLVOLUME 0x00000080
+#define DSBCAPS_CTRLDEFAULT 0x000000E0 /* Pan + volume + frequency. */
+#define DSBCAPS_CTRLPOSITIONNOTIFY 0x00000100
+#define DSBCAPS_CTRLFX 0x00000200
+#define DSBCAPS_CTRLALL 0x000001F0 /* All control capabilities */
+#define DSBCAPS_STICKYFOCUS 0x00004000
+#define DSBCAPS_GLOBALFOCUS 0x00008000
+#define DSBCAPS_GETCURRENTPOSITION2 0x00010000 /* More accurate play cursor under emulation*/
+#define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000
+#define DSBCAPS_LOCDEFER 0x00040000
+
+#define DSBSIZE_MIN 4
+#define DSBSIZE_MAX 0xFFFFFFF
+#define DSBPAN_LEFT -10000
+#define DSBPAN_CENTER 0
+#define DSBPAN_RIGHT 10000
+#define DSBVOLUME_MAX 0
+#define DSBVOLUME_MIN -10000
+#define DSBFREQUENCY_MIN 100
+#define DSBFREQUENCY_MAX 200000
+#define DSBFREQUENCY_ORIGINAL 0
+
+#define DSBNOTIFICATIONS_MAX 100000U
+
+typedef struct _DSBCAPS
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwBufferBytes;
+ DWORD dwUnlockTransferRate;
+ DWORD dwPlayCpuOverhead;
+} DSBCAPS,*LPDSBCAPS;
+typedef const DSBCAPS *LPCDSBCAPS;
+
+#define DSSCL_NORMAL 1
+#define DSSCL_PRIORITY 2
+#define DSSCL_EXCLUSIVE 3
+#define DSSCL_WRITEPRIMARY 4
+
+typedef struct _DSEFFECTDESC
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ GUID guidDSFXClass;
+ DWORD_PTR dwReserved1;
+ DWORD_PTR dwReserved2;
+} DSEFFECTDESC,*LPDSEFFECTDESC;
+typedef const DSEFFECTDESC *LPCDSEFFECTDESC;
+
+#define DSFX_LOCHARDWARE 0x00000001
+#define DSFX_LOCSOFTWARE 0x00000002
+
+enum
+{
+ DSFXR_PRESENT,
+ DSFXR_LOCHARDWARE,
+ DSFXR_LOCSOFTWARE,
+ DSFXR_UNALLOCATED,
+ DSFXR_FAILED,
+ DSFXR_UNKNOWN,
+ DSFXR_SENDLOOP
+};
+
+typedef struct _DSBUFFERDESC1
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwBufferBytes;
+ DWORD dwReserved;
+ LPWAVEFORMATEX lpwfxFormat;
+} DSBUFFERDESC1,*LPDSBUFFERDESC1;
+typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1;
+
+typedef struct _DSBUFFERDESC
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwBufferBytes;
+ DWORD dwReserved;
+ LPWAVEFORMATEX lpwfxFormat;
+ GUID guid3DAlgorithm;
+} DSBUFFERDESC,*LPDSBUFFERDESC;
+typedef const DSBUFFERDESC *LPCDSBUFFERDESC;
+
+typedef struct _DSBPOSITIONNOTIFY
+{
+ DWORD dwOffset;
+ HANDLE hEventNotify;
+} DSBPOSITIONNOTIFY,*LPDSBPOSITIONNOTIFY;
+typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY;
+
+#define DSSPEAKER_HEADPHONE 1
+#define DSSPEAKER_MONO 2
+#define DSSPEAKER_QUAD 3
+#define DSSPEAKER_STEREO 4
+#define DSSPEAKER_SURROUND 5
+#define DSSPEAKER_5POINT1 6
+#define DSSPEAKER_7POINT1 7
+
+#define DSSPEAKER_GEOMETRY_MIN 0x00000005 /* 5 degrees */
+#define DSSPEAKER_GEOMETRY_NARROW 0x0000000A /* 10 degrees */
+#define DSSPEAKER_GEOMETRY_WIDE 0x00000014 /* 20 degrees */
+#define DSSPEAKER_GEOMETRY_MAX 0x000000B4 /* 180 degrees */
+
+#define DSSPEAKER_COMBINED(c, g) ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16))
+#define DSSPEAKER_CONFIG(a) ((BYTE)(a))
+#define DSSPEAKER_GEOMETRY(a) ((BYTE)(((DWORD)(a) >> 16) & 0x00FF))
+
+#define DS_CERTIFIED 0x00000000
+#define DS_UNCERTIFIED 0x00000001
+
+typedef struct _DSCEFFECTDESC
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ GUID guidDSCFXClass;
+ GUID guidDSCFXInstance;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+} DSCEFFECTDESC, *LPDSCEFFECTDESC;
+typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC;
+
+#define DSCFX_LOCHARDWARE 0x00000001
+#define DSCFX_LOCSOFTWARE 0x00000002
+
+#define DSCFXR_LOCHARDWARE 0x00000010
+#define DSCFXR_LOCSOFTWARE 0x00000020
+
+typedef struct _DSCBUFFERDESC1
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwBufferBytes;
+ DWORD dwReserved;
+ LPWAVEFORMATEX lpwfxFormat;
+} DSCBUFFERDESC1, *LPDSCBUFFERDESC1;
+
+typedef struct _DSCBUFFERDESC
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwBufferBytes;
+ DWORD dwReserved;
+ LPWAVEFORMATEX lpwfxFormat;
+ DWORD dwFXCount;
+ LPDSCEFFECTDESC lpDSCFXDesc;
+} DSCBUFFERDESC, *LPDSCBUFFERDESC;
+typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC;
+
+typedef struct _DSCCAPS
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwFormats;
+ DWORD dwChannels;
+} DSCCAPS, *LPDSCCAPS;
+typedef const DSCCAPS *LPCDSCCAPS;
+
+typedef struct _DSCBCAPS
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwBufferBytes;
+ DWORD dwReserved;
+} DSCBCAPS, *LPDSCBCAPS;
+typedef const DSCBCAPS *LPCDSCBCAPS;
+
+#define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER
+#define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED
+#define DSCCAPS_MULTIPLECAPTURE 0x00000001
+
+#define DSCBCAPS_WAVEMAPPED 0x80000000
+#define DSCBCAPS_CTRLFX 0x00000200
+
+#define DSCBLOCK_ENTIREBUFFER 0x00000001
+#define DSCBSTART_LOOPING 0x00000001
+#define DSCBPN_OFFSET_STOP 0xffffffff
+
+#define DSCBSTATUS_CAPTURING 0x00000001
+#define DSCBSTATUS_LOOPING 0x00000002
+
+#ifndef __LPCGUID_DEFINED__
+#define __LPCGUID_DEFINED__
+typedef const GUID *LPCGUID;
+#endif
+
+typedef WINBOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID,LPCWSTR,LPCWSTR,LPVOID);
+typedef WINBOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID,LPCSTR,LPCSTR,LPVOID);
+__MINGW_TYPEDEF_AW(LPDSENUMCALLBACK)
+
+extern HRESULT WINAPI DirectSoundCreate(LPCGUID lpGUID,LPDIRECTSOUND *ppDS,LPUNKNOWN pUnkOuter);
+extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA, LPVOID);
+extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW, LPVOID);
+#define DirectSoundEnumerate __MINGW_NAME_AW(DirectSoundEnumerate)
+extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter);
+extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA, LPVOID);
+extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW, LPVOID);
+#define DirectSoundCaptureEnumerate __MINGW_NAME_AW(DirectSoundCaptureEnumerate)
+
+extern HRESULT WINAPI DirectSoundCreate8(LPCGUID lpGUID,LPDIRECTSOUND8 *ppDS8,LPUNKNOWN pUnkOuter);
+extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID lpGUID, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter);
+extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice,
+ LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, DWORD dwLevel,
+ LPDIRECTSOUNDFULLDUPLEX *ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter);
+#define DirectSoundFullDuplexCreate8 DirectSoundFullDuplexCreate
+extern HRESULT WINAPI GetDeviceID(LPCGUID lpGuidSrc, LPGUID lpGuidDest);
+
+
+/*****************************************************************************
+ * IDirectSound interface
+ */
+#define INTERFACE IDirectSound
+DECLARE_INTERFACE_(IDirectSound,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectSound methods ***/
+ STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE;
+ STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE;
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE;
+ STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE;
+ STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSound_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSound_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectSound_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectSound methods ***/
+#define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
+#define IDirectSound_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
+#define IDirectSound_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectSound_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectSound_GetSpeakerConfig(p,a) (p)->lpVtbl->GetSpeakerConfig(p,a)
+#define IDirectSound_SetSpeakerConfig(p,a) (p)->lpVtbl->SetSpeakerConfig(p,a)
+#define IDirectSound_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectSound_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectSound_AddRef(p) (p)->AddRef()
+#define IDirectSound_Release(p) (p)->Release()
+/*** IDirectSound methods ***/
+#define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->CreateSoundBuffer(a,b,c)
+#define IDirectSound_GetCaps(p,a) (p)->GetCaps(a)
+#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b)
+#define IDirectSound_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectSound_Compact(p) (p)->Compact()
+#define IDirectSound_GetSpeakerConfig(p,a) (p)->GetSpeakerConfig(a)
+#define IDirectSound_SetSpeakerConfig(p,a) (p)->SetSpeakerConfig(a)
+#define IDirectSound_Initialize(p,a) (p)->Initialize(a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectSound8 interface
+ */
+#define INTERFACE IDirectSound8
+DECLARE_INTERFACE_(IDirectSound8,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectSound8 methods ***/
+ STDMETHOD(CreateSoundBuffer)(THIS_ LPCDSBUFFERDESC lpcDSBufferDesc, LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer, IUnknown *pUnkOuter) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDSCAPS lpDSCaps) PURE;
+ STDMETHOD(DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER lpDsbOriginal, LPLPDIRECTSOUNDBUFFER lplpDsbDuplicate) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwLevel) PURE;
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(GetSpeakerConfig)(THIS_ LPDWORD lpdwSpeakerConfig) PURE;
+ STDMETHOD(SetSpeakerConfig)(THIS_ DWORD dwSpeakerConfig) PURE;
+ STDMETHOD(Initialize)(THIS_ LPCGUID lpcGuid) PURE;
+ STDMETHOD(VerifyCertification)(THIS_ LPDWORD pdwCertified) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectSound8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSound8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectSound8_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectSound methods ***/
+#define IDirectSound8_CreateSoundBuffer(p,a,b,c) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
+#define IDirectSound8_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectSound8_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
+#define IDirectSound8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectSound8_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectSound8_GetSpeakerConfig(p,a) (p)->lpVtbl->GetSpeakerConfig(p,a)
+#define IDirectSound8_SetSpeakerConfig(p,a) (p)->lpVtbl->SetSpeakerConfig(p,a)
+#define IDirectSound8_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+/*** IDirectSound8 methods ***/
+#define IDirectSound8_VerifyCertification(p,a) (p)->lpVtbl->VerifyCertification(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectSound8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectSound8_AddRef(p) (p)->AddRef()
+#define IDirectSound8_Release(p) (p)->Release()
+/*** IDirectSound methods ***/