Added dxd9 sdk, even big libs lol.

This commit is contained in:
= 2025-07-10 00:08:30 -04:00
parent c980d53543
commit 556e33d56f
209 changed files with 244659 additions and 0 deletions

433
third_party/dx9_sdk/include/Amvideo.h vendored Normal file
View File

@ -0,0 +1,433 @@
//------------------------------------------------------------------------------
// File: AMVideo.h
//
// Desc: Video related definitions and interfaces for ActiveMovie.
//
// Copyright (c) 1992 - 2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef __AMVIDEO__
#define __AMVIDEO__
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
#include <ddraw.h>
// This is an interface on the video renderer that provides information about
// DirectDraw with respect to its use by the renderer. For example it allows
// an application to get details of the surface and any hardware capabilities
// that are available. It also allows someone to adjust the surfaces that the
// renderer should use and furthermore even set the DirectDraw instance. We
// allow someone to set the DirectDraw instance because DirectDraw can only
// be opened once per process so it helps resolve conflicts. There is some
// duplication in this interface as the hardware/emulated/FOURCCs available
// can all be found through the IDirectDraw interface, this interface allows
// simple access to that information without calling the DirectDraw provider
// itself. The AMDDS prefix is ActiveMovie DirectDraw Switches abbreviated.
#define AMDDS_NONE 0x00 // No use for DCI/DirectDraw
#define AMDDS_DCIPS 0x01 // Use DCI primary surface
#define AMDDS_PS 0x02 // Use DirectDraw primary
#define AMDDS_RGBOVR 0x04 // RGB overlay surfaces
#define AMDDS_YUVOVR 0x08 // YUV overlay surfaces
#define AMDDS_RGBOFF 0x10 // RGB offscreen surfaces
#define AMDDS_YUVOFF 0x20 // YUV offscreen surfaces
#define AMDDS_RGBFLP 0x40 // RGB flipping surfaces
#define AMDDS_YUVFLP 0x80 // YUV flipping surfaces
#define AMDDS_ALL 0xFF // ALL the previous flags
#define AMDDS_DEFAULT AMDDS_ALL // Use all available surfaces
#define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP)
#define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP)
#define AMDDS_PRIMARY (AMDDS_DCIPS | AMDDS_PS)
// be nice to our friends in C
#undef INTERFACE
#define INTERFACE IDirectDrawVideo
DECLARE_INTERFACE_(IDirectDrawVideo, IUnknown)
{
// IUnknown methods
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
// IDirectDrawVideo methods
STDMETHOD(GetSwitches)(THIS_ DWORD *pSwitches) PURE;
STDMETHOD(SetSwitches)(THIS_ DWORD Switches) PURE;
STDMETHOD(GetCaps)(THIS_ DDCAPS *pCaps) PURE;
STDMETHOD(GetEmulatedCaps)(THIS_ DDCAPS *pCaps) PURE;
STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC *pSurfaceDesc) PURE;
STDMETHOD(GetFourCCCodes)(THIS_ DWORD *pCount,DWORD *pCodes) PURE;
STDMETHOD(SetDirectDraw)(THIS_ LPDIRECTDRAW pDirectDraw) PURE;
STDMETHOD(GetDirectDraw)(THIS_ LPDIRECTDRAW *ppDirectDraw) PURE;
STDMETHOD(GetSurfaceType)(THIS_ DWORD *pSurfaceType) PURE;
STDMETHOD(SetDefault)(THIS) PURE;
STDMETHOD(UseScanLine)(THIS_ long UseScanLine) PURE;
STDMETHOD(CanUseScanLine)(THIS_ long *UseScanLine) PURE;
STDMETHOD(UseOverlayStretch)(THIS_ long UseOverlayStretch) PURE;
STDMETHOD(CanUseOverlayStretch)(THIS_ long *UseOverlayStretch) PURE;
STDMETHOD(UseWhenFullScreen)(THIS_ long UseWhenFullScreen) PURE;
STDMETHOD(WillUseFullScreen)(THIS_ long *UseWhenFullScreen) PURE;
};
// be nice to our friends in C
#undef INTERFACE
#define INTERFACE IQualProp
DECLARE_INTERFACE_(IQualProp, IUnknown)
{
// IUnknown methods
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
// Compare these with the functions in class CGargle in gargle.h
STDMETHOD(get_FramesDroppedInRenderer)(THIS_ int *pcFrames) PURE; // Out
STDMETHOD(get_FramesDrawn)(THIS_ int *pcFramesDrawn) PURE; // Out
STDMETHOD(get_AvgFrameRate)(THIS_ int *piAvgFrameRate) PURE; // Out
STDMETHOD(get_Jitter)(THIS_ int *iJitter) PURE; // Out
STDMETHOD(get_AvgSyncOffset)(THIS_ int *piAvg) PURE; // Out
STDMETHOD(get_DevSyncOffset)(THIS_ int *piDev) PURE; // Out
};
// This interface allows an application or plug in distributor to control a
// full screen renderer. The Modex renderer supports this interface. When
// connected a renderer should load the display modes it has available
// The number of modes available can be obtained through CountModes. Then
// information on each individual mode is available by calling GetModeInfo
// and IsModeAvailable. An application may enable and disable any modes
// by calling the SetEnabled flag with OATRUE or OAFALSE (not C/C++ TRUE
// and FALSE values) - the current value may be queried by IsModeEnabled
// A more generic way of setting the modes enabled that is easier to use
// when writing applications is the clip loss factor. This defines the
// amount of video that can be lost when deciding which display mode to
// use. Assuming the decoder cannot compress the video then playing an
// MPEG file (say 352x288) into a 320x200 display will lose about 25% of
// the image. The clip loss factor specifies the upper range permissible.
// To allow typical MPEG video to be played in 320x200 it defaults to 25%
// be nice to our friends in C
#undef INTERFACE
#define INTERFACE IFullScreenVideo
DECLARE_INTERFACE_(IFullScreenVideo, IUnknown)
{
// IUnknown methods
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
// IFullScreenVideo methods
STDMETHOD(CountModes)(THIS_ long *pModes) PURE;
STDMETHOD(GetModeInfo)(THIS_ long Mode,long *pWidth,long *pHeight,long *pDepth) PURE;
STDMETHOD(GetCurrentMode)(THIS_ long *pMode) PURE;
STDMETHOD(IsModeAvailable)(THIS_ long Mode) PURE;
STDMETHOD(IsModeEnabled)(THIS_ long Mode) PURE;
STDMETHOD(SetEnabled)(THIS_ long Mode,long bEnabled) PURE;
STDMETHOD(GetClipFactor)(THIS_ long *pClipFactor) PURE;
STDMETHOD(SetClipFactor)(THIS_ long ClipFactor) PURE;
STDMETHOD(SetMessageDrain)(THIS_ HWND hwnd) PURE;
STDMETHOD(GetMessageDrain)(THIS_ HWND *hwnd) PURE;
STDMETHOD(SetMonitor)(THIS_ long Monitor) PURE;
STDMETHOD(GetMonitor)(THIS_ long *Monitor) PURE;
STDMETHOD(HideOnDeactivate)(THIS_ long Hide) PURE;
STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
STDMETHOD(SetCaption)(THIS_ BSTR strCaption) PURE;
STDMETHOD(GetCaption)(THIS_ BSTR *pstrCaption) PURE;
STDMETHOD(SetDefault)(THIS) PURE;
};
// This adds the accelerator table capabilities in fullscreen. This is being
// added between the original runtime release and the full SDK release. We
// cannot just add the method to IFullScreenVideo as we don't want to force
// applications to have to ship the ActiveMovie support DLLs - this is very
// important to applications that plan on being downloaded over the Internet
// be nice to our friends in C
#undef INTERFACE
#define INTERFACE IFullScreenVideoEx
DECLARE_INTERFACE_(IFullScreenVideoEx, IFullScreenVideo)
{
// IUnknown methods
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
// IFullScreenVideo methods
STDMETHOD(CountModes)(THIS_ long *pModes) PURE;
STDMETHOD(GetModeInfo)(THIS_ long Mode,long *pWidth,long *pHeight,long *pDepth) PURE;
STDMETHOD(GetCurrentMode)(THIS_ long *pMode) PURE;
STDMETHOD(IsModeAvailable)(THIS_ long Mode) PURE;
STDMETHOD(IsModeEnabled)(THIS_ long Mode) PURE;
STDMETHOD(SetEnabled)(THIS_ long Mode,long bEnabled) PURE;
STDMETHOD(GetClipFactor)(THIS_ long *pClipFactor) PURE;
STDMETHOD(SetClipFactor)(THIS_ long ClipFactor) PURE;
STDMETHOD(SetMessageDrain)(THIS_ HWND hwnd) PURE;
STDMETHOD(GetMessageDrain)(THIS_ HWND *hwnd) PURE;
STDMETHOD(SetMonitor)(THIS_ long Monitor) PURE;
STDMETHOD(GetMonitor)(THIS_ long *Monitor) PURE;
STDMETHOD(HideOnDeactivate)(THIS_ long Hide) PURE;
STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
STDMETHOD(SetCaption)(THIS_ BSTR strCaption) PURE;
STDMETHOD(GetCaption)(THIS_ BSTR *pstrCaption) PURE;
STDMETHOD(SetDefault)(THIS) PURE;
// IFullScreenVideoEx
STDMETHOD(SetAcceleratorTable)(THIS_ HWND hwnd,HACCEL hAccel) PURE;
STDMETHOD(GetAcceleratorTable)(THIS_ HWND *phwnd,HACCEL *phAccel) PURE;
STDMETHOD(KeepPixelAspectRatio)(THIS_ long KeepAspect) PURE;
STDMETHOD(IsKeepPixelAspectRatio)(THIS_ long *pKeepAspect) PURE;
};
// The SDK base classes contain a base video mixer class. Video mixing in a
// software environment is tricky because we typically have multiple streams
// each sending data at unpredictable times. To work with this we defined a
// pin that is the lead pin, when data arrives on this pin we do a mix. As
// an alternative we may not want to have a lead pin but output samples at
// predefined spaces, like one every 1/15 of a second, this interfaces also
// supports that mode of operations (there is a working video mixer sample)
// be nice to our friends in C
#undef INTERFACE
#define INTERFACE IBaseVideoMixer
DECLARE_INTERFACE_(IBaseVideoMixer, IUnknown)
{
STDMETHOD(SetLeadPin)(THIS_ int iPin) PURE;
STDMETHOD(GetLeadPin)(THIS_ int *piPin) PURE;
STDMETHOD(GetInputPinCount)(THIS_ int *piPinCount) PURE;
STDMETHOD(IsUsingClock)(THIS_ int *pbValue) PURE;
STDMETHOD(SetUsingClock)(THIS_ int bValue) PURE;
STDMETHOD(GetClockPeriod)(THIS_ int *pbValue) PURE;
STDMETHOD(SetClockPeriod)(THIS_ int bValue) PURE;
};
#define iPALETTE_COLORS 256 // Maximum colours in palette
#define iEGA_COLORS 16 // Number colours in EGA palette
#define iMASK_COLORS 3 // Maximum three components
#define iTRUECOLOR 16 // Minimum true colour device
#define iRED 0 // Index position for RED mask
#define iGREEN 1 // Index position for GREEN mask
#define iBLUE 2 // Index position for BLUE mask
#define iPALETTE 8 // Maximum colour depth using a palette
#define iMAXBITS 8 // Maximum bits per colour component
// Used for true colour images that also have a palette
typedef struct tag_TRUECOLORINFO {
DWORD dwBitMasks[iMASK_COLORS];
RGBQUAD bmiColors[iPALETTE_COLORS];
} TRUECOLORINFO;
// The BITMAPINFOHEADER contains all the details about the video stream such
// as the actual image dimensions and their pixel depth. A source filter may
// also request that the sink take only a section of the video by providing a
// clipping rectangle in rcSource. In the worst case where the sink filter
// forgets to check this on connection it will simply render the whole thing
// which isn't a disaster. Ideally a sink filter will check the rcSource and
// if it doesn't support image extraction and the rectangle is not empty then
// it will reject the connection. A filter should use SetRectEmpty to reset a
// rectangle to all zeroes (and IsRectEmpty to later check the rectangle).
// The rcTarget specifies the destination rectangle for the video, for most
// source filters they will set this to all zeroes, a downstream filter may
// request that the video be placed in a particular area of the buffers it
// supplies in which case it will call QueryAccept with a non empty target
typedef struct tagVIDEOINFOHEADER {
RECT rcSource; // The bit we really want to use
RECT rcTarget; // Where the video should go
DWORD dwBitRate; // Approximate bit data rate
DWORD dwBitErrorRate; // Bit error rate for this stream
REFERENCE_TIME AvgTimePerFrame; // Average time per frame (100ns units)
BITMAPINFOHEADER bmiHeader;
} VIDEOINFOHEADER;
// make sure the pbmi is initialized before using these macros
#define TRUECOLOR(pbmi) ((TRUECOLORINFO *)(((LPBYTE)&((pbmi)->bmiHeader)) \
+ (pbmi)->bmiHeader.biSize))
#define COLORS(pbmi) ((RGBQUAD *)(((LPBYTE)&((pbmi)->bmiHeader)) \
+ (pbmi)->bmiHeader.biSize))
#define BITMASKS(pbmi) ((DWORD *)(((LPBYTE)&((pbmi)->bmiHeader)) \
+ (pbmi)->bmiHeader.biSize))
// All the image based filters use this to communicate their media types. It's
// centred principally around the BITMAPINFO. This structure always contains a
// BITMAPINFOHEADER followed by a number of other fields depending on what the
// BITMAPINFOHEADER contains. If it contains details of a palettised format it
// will be followed by one or more RGBQUADs defining the palette. If it holds
// details of a true colour format then it may be followed by a set of three
// DWORD bit masks that specify where the RGB data can be found in the image
// (For more information regarding BITMAPINFOs see the Win32 documentation)
// The rcSource and rcTarget fields are not for use by filters supplying the
// data. The destination (target) rectangle should be set to all zeroes. The
// source may also be zero filled or set with the dimensions of the video. So
// if the video is 352x288 pixels then set it to (0,0,352,288). These fields
// are mainly used by downstream filters that want to ask the source filter
// to place the image in a different position in an output buffer. So when
// using for example the primary surface the video renderer may ask a filter
// to place the video images in a destination position of (100,100,452,388)
// on the display since that's where the window is positioned on the display
// !!! WARNING !!!
// DO NOT use this structure unless you are sure that the BITMAPINFOHEADER
// has a normal biSize == sizeof(BITMAPINFOHEADER) !
// !!! WARNING !!!
typedef struct tagVIDEOINFO {
RECT rcSource; // The bit we really want to use
RECT rcTarget; // Where the video should go
DWORD dwBitRate; // Approximate bit data rate
DWORD dwBitErrorRate; // Bit error rate for this stream
REFERENCE_TIME AvgTimePerFrame; // Average time per frame (100ns units)
BITMAPINFOHEADER bmiHeader;
union {
RGBQUAD bmiColors[iPALETTE_COLORS]; // Colour palette
DWORD dwBitMasks[iMASK_COLORS]; // True colour masks
TRUECOLORINFO TrueColorInfo; // Both of the above
};
} VIDEOINFO;
// These macros define some standard bitmap format sizes
#define SIZE_EGA_PALETTE (iEGA_COLORS * sizeof(RGBQUAD))
#define SIZE_PALETTE (iPALETTE_COLORS * sizeof(RGBQUAD))
#define SIZE_MASKS (iMASK_COLORS * sizeof(DWORD))
#define SIZE_PREHEADER (FIELD_OFFSET(VIDEOINFOHEADER,bmiHeader))
#define SIZE_VIDEOHEADER (sizeof(BITMAPINFOHEADER) + SIZE_PREHEADER)
// !!! for abnormal biSizes
// #define SIZE_VIDEOHEADER(pbmi) ((pbmi)->bmiHeader.biSize + SIZE_PREHEADER)
// DIBSIZE calculates the number of bytes required by an image
#define WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8)
#define DIBWIDTHBYTES(bi) (DWORD)WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount)
#define _DIBSIZE(bi) (DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight)
#define DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(_DIBSIZE(bi)) : _DIBSIZE(bi))
// This compares the bit masks between two VIDEOINFOHEADERs
#define BIT_MASKS_MATCH(pbmi1,pbmi2) \
(((pbmi1)->dwBitMasks[iRED] == (pbmi2)->dwBitMasks[iRED]) && \
((pbmi1)->dwBitMasks[iGREEN] == (pbmi2)->dwBitMasks[iGREEN]) && \
((pbmi1)->dwBitMasks[iBLUE] == (pbmi2)->dwBitMasks[iBLUE]))
// These zero fill different parts of the VIDEOINFOHEADER structure
// Only use these macros for pbmi's with a normal BITMAPINFOHEADER biSize
#define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(pbmi)->dwBitFields,SIZE_MASKS))
#define RESET_HEADER(pbmi) (ZeroMemory((PVOID)(pbmi),SIZE_VIDEOHEADER))
#define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(pbmi)->bmiColors,SIZE_PALETTE));
#if 0
// !!! This is the right way to do it, but may break existing code
#define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(((LPBYTE)(pbmi)->bmiHeader) + \
(pbmi)->bmiHeader.biSize,SIZE_MASKS)))
#define RESET_HEADER(pbmi) (ZeroMemory((PVOID)(pbmi), SIZE_PREHEADER + \
sizeof(BITMAPINFOHEADER)))
#define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(((LPBYTE)(pbmi)->bmiHeader) + \
(pbmi)->bmiHeader.biSize,SIZE_PALETTE))
#endif
// Other (hopefully) useful bits and bobs
#define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= iPALETTE)
#define PALETTE_ENTRIES(pbmi) ((DWORD) 1 << (pbmi)->bmiHeader.biBitCount)
// Returns the address of the BITMAPINFOHEADER from the VIDEOINFOHEADER
#define HEADER(pVideoInfo) (&(((VIDEOINFOHEADER *) (pVideoInfo))->bmiHeader))
// MPEG variant - includes a DWORD length followed by the
// video sequence header after the video header.
//
// The sequence header includes the sequence header start code and the
// quantization matrices associated with the first sequence header in the
// stream so is a maximum of 140 bytes long.
typedef struct tagMPEG1VIDEOINFO {
VIDEOINFOHEADER hdr; // Compatible with VIDEOINFO
DWORD dwStartTimeCode; // 25-bit Group of pictures time code
// at start of data
DWORD cbSequenceHeader; // Length in bytes of bSequenceHeader
BYTE bSequenceHeader[1]; // Sequence header including
// quantization matrices if any
} MPEG1VIDEOINFO;
#define MAX_SIZE_MPEG1_SEQUENCE_INFO 140
#define SIZE_MPEG1VIDEOINFO(pv) (FIELD_OFFSET(MPEG1VIDEOINFO, bSequenceHeader[0]) + (pv)->cbSequenceHeader)
#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
// Analog video variant - Use this when the format is FORMAT_AnalogVideo
//
// rcSource defines the portion of the active video signal to use
// rcTarget defines the destination rectangle
// both of the above are relative to the dwActiveWidth and dwActiveHeight fields
// dwActiveWidth is currently set to 720 for all formats (but could change for HDTV)
// dwActiveHeight is 483 for NTSC and 575 for PAL/SECAM (but could change for HDTV)
typedef struct tagAnalogVideoInfo {
RECT rcSource; // Width max is 720, height varies w/ TransmissionStd
RECT rcTarget; // Where the video should go
DWORD dwActiveWidth; // Always 720 (CCIR-601 active samples per line)
DWORD dwActiveHeight; // 483 for NTSC, 575 for PAL/SECAM
REFERENCE_TIME AvgTimePerFrame; // Normal ActiveMovie units (100 nS)
} ANALOGVIDEOINFO;
//
// AM_KSPROPSETID_FrameStep property set definitions
//
typedef enum {
// Step
AM_PROPERTY_FRAMESTEP_STEP = 0x01,
AM_PROPERTY_FRAMESTEP_CANCEL = 0x02,
// S_OK for these 2 means we can - S_FALSE if we can't
AM_PROPERTY_FRAMESTEP_CANSTEP = 0x03,
AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x04
} AM_PROPERTY_FRAMESTEP;
typedef struct _AM_FRAMESTEP_STEP
{
// 1 means step 1 frame forward
// 0 is invalid
// n (n > 1) means skip n - 1 frames and show the nth
DWORD dwFramesToStep;
} AM_FRAMESTEP_STEP;
#ifdef __cplusplus
}
#endif // __cplusplus
#endif // __AMVIDEO__

1750
third_party/dx9_sdk/include/Bdatif.h vendored Normal file

File diff suppressed because it is too large Load Diff

78
third_party/dx9_sdk/include/DShow.h vendored Normal file
View File

@ -0,0 +1,78 @@
//------------------------------------------------------------------------------
// File: DShow.h
//
// Desc: DirectShow top-level include file
//
// Copyright (c) 2000-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef __DSHOW_INCLUDED__
#define __DSHOW_INCLUDED__
///////////////////////////////////////////////////////////////////////////
// Set up constants & pragmas for the compiler
///////////////////////////////////////////////////////////////////////////
#ifdef _MSC_VER
// disable some level-4 warnings, use #pragma warning(default:###) to re-enable
#pragma warning(disable:4100) // warning C4100: unreferenced formal parameter
#pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union
#pragma warning(disable:4511) // warning C4511: copy constructor could not be generated
#pragma warning(disable:4512) // warning C4512: assignment operator could not be generated
#pragma warning(disable:4514) // warning C4514: "unreferenced inline function has been removed"
#if _MSC_VER>=1100
#define AM_NOVTABLE __declspec(novtable)
#else
#define AM_NOVTABLE
#endif
#endif // MSC_VER
///////////////////////////////////////////////////////////////////////////
// Include standard Windows files
///////////////////////////////////////////////////////////////////////////
#include <windows.h>
#include <windowsx.h>
#include <olectl.h>
#include <ddraw.h>
#include <mmsystem.h>
#ifndef NUMELMS
#define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
#endif
///////////////////////////////////////////////////////////////////////////
// Include DirectShow include files
///////////////////////////////////////////////////////////////////////////
#include <strmif.h> // Generated IDL header file for streams interfaces
#include <amvideo.h> // ActiveMovie video interfaces and definitions
#include <amaudio.h> // ActiveMovie audio interfaces and definitions
#include <control.h> // generated from control.odl
#include <evcode.h> // event code definitions
#include <uuids.h> // declaration of type GUIDs and well-known clsids
#include <errors.h> // HRESULT status and error definitions
#include <edevdefs.h> // External device control interface defines
#include <audevcod.h> // audio filter device error event codes
#include <dvdevcod.h> // DVD error event codes
///////////////////////////////////////////////////////////////////////////
// Define OLE Automation constants
///////////////////////////////////////////////////////////////////////////
#ifndef OATRUE
#define OATRUE (-1)
#endif // OATRUE
#ifndef OAFALSE
#define OAFALSE (0)
#endif // OAFALSE
///////////////////////////////////////////////////////////////////////////
// Define Win64 interfaces if not already defined
///////////////////////////////////////////////////////////////////////////
// InterlockedExchangePointer
#ifndef InterlockedExchangePointer
#define InterlockedExchangePointer(Target, Value) \
(PVOID)InterlockedExchange((PLONG)(Target), (LONG)(Value))
#endif
#endif // __DSHOW_INCLUDED__

View File

@ -0,0 +1,678 @@
//---------------------------------------------------------------------
//
// Copyright (c) 1999-2002 Microsoft Corporation
//
// BDATIF.idl
//
//---------------------------------------------------------------------
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (C) Microsoft Corporation, 1999-2002.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#pragma warning(disable:4201) /* Nameless struct/union */")
cpp_quote("#endif")
cpp_quote("#if ( _MSC_VER >= 1020 )")
cpp_quote("#pragma once")
cpp_quote("#endif")
//---------------------------------------------------------------------
// IUnknown import idl
//---------------------------------------------------------------------
#ifndef DO_NO_IMPORTS
import "unknwn.idl";
import "strmif.idl";
import "tuner.idl";
import "bdaiface.idl";
#endif
interface IMPEG2_TIF_CONTROL;
interface IATSCChannelInfo;
interface IMPEG2PIDMap;
//******************************************************************************
//
// IBDA_TIF_REGISTRATION interface
//
// Implemented by the Microsoft ATSC/DVB BDA Network Provider
//
// Used by a transport information filter (TIF) to Register with the NP
// AND obtain an Interface to the Demux to set/ Remove PIDs.The TIF here passes
// IUNKNOWN of the pin it is connecting to and obtains the IMPEG2PIDMAP interface
// implemented by the NP to Map/ UnMap pids.
//
[
object,
uuid(DFEF4A68-EE61-415f-9CCB-CD95F2F98A3A),
helpstring("BDA Network Provider Registration Inteface for DVB/ATSC Transport Information Filters"),
pointer_default(unique)
]
interface IBDA_TIF_REGISTRATION : IUnknown
{
[helpstring("Used to register a transport analyzer with the Network Provider")]
HRESULT
RegisterTIFEx (
[in] IPin * pTIFInputPin,
[in, out] ULONG * ppvRegistrationContext,
[in, out] IUnknown ** ppMpeg2DataControl
);
[helpstring("Used to unregister TIF with the Network Provider")]
HRESULT
UnregisterTIF (
[in] ULONG pvRegistrationContext
);
}
//******************************************************************************
//
// IMPEG2_TIF_CONTROL interface
//
// Implemented by the Microsoft ATSC/DVB BDA Network Provider
//
// Used by a transport information filter (TIF) to request table
// sections carried on specific PIDs within the transport stream.
// The Network Provider Filter will, in turn, do the necessary
// control on the Demux Filter. All sections are delivered as comlete
// mpeg2 table sections via the TIF's connection to the Demux Filter.
//
[
object,
uuid(F9BAC2F9-4149-4916-B2EF-FAA202326862),
helpstring("BDA Network Provider Inteface for DVB/ATSC Transport Information Filters"),
pointer_default(unique)
]
interface IMPEG2_TIF_CONTROL : IUnknown
{
[helpstring("Used to register a transport analyzer with the Network Provider")]
HRESULT
RegisterTIF (
[in] IUnknown * pUnkTIF,
[in, out] ULONG * ppvRegistrationContext
);
[helpstring("Used to unregister TIF with the Network Provider")]
HRESULT
UnregisterTIF (
[in] ULONG pvRegistrationContext
);
[helpstring("Used to add PSI/SI MPEG2 packet IDs to the TIF's data stream")]
HRESULT
AddPIDs (
[in] ULONG ulcPIDs,
[in] ULONG * pulPIDs
);
[helpstring("Used to remove PSI/SI MPEG2 packet IDs from the TIF's data stream")]
HRESULT
DeletePIDs (
[in] ULONG ulcPIDs,
[in] ULONG * pulPIDs
);
[helpstring("Returns the number of MPEG2 Packet IDs being filtered into the TIF's input data.")]
HRESULT
GetPIDCount (
[out] ULONG * pulcPIDs
);
[helpstring("Returns the the list of MPEG2 Packet IDs being filtered into the TIF's input data.")]
HRESULT
GetPIDs (
[out] ULONG * pulcPIDs,
[out] ULONG * pulPIDs
);
}
//******************************************************************************
//
// ITuneRequestInfo interface
//
// Implemented by a BDA transport information filter (TIF)
//
// Used by the BDA Network Provider to obtain network specific
// information about locating transport streams and aquiring
// services.
//
//
// GetLocatorData -
//
// GetComponentData -
//
// CreateComponentList -
//
// GetNextService -
//
// GetPreviouService -
//
// GetNextLocator -
//
// GetPreviousLocator -
//
[
object,
uuid(A3B152DF-7A90-4218-AC54-9830BEE8C0B6),
helpstring("Interface provided by the Mpeg2 Transport Information Filter to supply tuning details."),
pointer_default(unique)
]
interface ITuneRequestInfo : IUnknown
{
[helpstring("TIF fills in channel/program locator information for the given tune request.")]
HRESULT
GetLocatorData (
[in] ITuneRequest *Request
);
[helpstring("TIF fills in all network specific component data for the existing component list on the given tune request.")]
HRESULT
GetComponentData (
[in] ITuneRequest *CurrentRequest
);
[helpstring("TIF creates a complete component list and fills in all network specific component data on the given tune request")]
HRESULT
CreateComponentList (
[in] ITuneRequest *CurrentRequest
);
[helpstring("TIF creates a new TuneRequest with channel/program locator information for the next service.")]
HRESULT
GetNextProgram (
[in] ITuneRequest *CurrentRequest,
[out, retval] ITuneRequest **TuneRequest
);
[helpstring("TIF creates a new TuneRequest with channel/program locator information for the previous service.")]
HRESULT
GetPreviousProgram (
[in] ITuneRequest *CurrentRequest,
[out, retval] ITuneRequest **TuneRequest
);
[helpstring("TIF creates a new TuneRequest with locator information for the next transport stream.")]
HRESULT
GetNextLocator (
[in] ITuneRequest *CurrentRequest,
[out, retval] ITuneRequest **TuneRequest
);
[helpstring("TIF creates a new TuneRequest with locator information for the previous transport stream.")]
HRESULT
GetPreviousLocator (
[in] ITuneRequest *CurrentRequest,
[out, retval] ITuneRequest **TuneRequest
);
}
//******************************************************************************
//
// IGuideDataEvent
//
// This is the guide data event notification callback interface. The
// callback interface is registered on a transport analyzer's
// IConnectionPoint by the event consumer.
//
// The event consumer MUST NOT BLOCK THE CALLING THREAD.
//
// If the consumer requires additional information about the event, it
// should queue the event to a separate thread.
//
// {EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7}
//
[
object,
uuid(EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7),
helpstring("Consumers of a guide data events must implement this callback interface."),
pointer_default(unique)
]
interface IGuideDataEvent : IUnknown
{
// Indicates that a complete set of guide data has been acquire from
// the current transport stream.
//
// MANDATORY - If a transport analyzer supports IGuideDataEvent then
// it must supply this event.
//
HRESULT GuideDataAcquired(
);
// Indicates that information about one or more programs changed.
//
// If varProgramDescriptionID is NULL then the consumer
// must get properties for all programs to determine which ones
// changed.
//
// MANDATORY - If a transport analyzer supports IGuideDataEvent then
// it must supply this event.
//
HRESULT ProgramChanged(
[in] VARIANT varProgramDescriptionID
);
// Indicates that information about one or more services changed.
//
// If varServiceDescriptionID is NULL then the consumer
// must get properties for all services to determine which ones
// changed.
//
// MANDATORY - If a transport analyzer supports IGuideDataEvent then
// it must supply this event.
//
HRESULT ServiceChanged(
[in] VARIANT varServiceDescriptionID
);
// Indicates that information about one or more schedule entries
// changed.
//
// If varScheduleEntryDescriptionID is NULL then the consumer
// must get properties for all schedule entries to determine which ones
// changed.
//
// MANDATORY - If a transport analyzer supports IGuideDataEvent then
// it must supply this event.
//
HRESULT ScheduleEntryChanged(
[in] VARIANT varScheduleEntryDescriptionID
);
// Indicates that the program with the given Description.ID
// has been deleted.
//
//
// Optional - Transport analyzer may supply this event. Consumer
// may return E_NOTIMPL.
//
HRESULT ProgramDeleted(
[in] VARIANT varProgramDescriptionID
);
// Indicates that the service with the given Description.ID
// has been deleted.
//
//
// Optional - Transport analyzer may supply this event. Consumer
// may return E_NOTIMPL.
//
HRESULT ServiceDeleted(
[in] VARIANT varServiceDescriptionID
);
// Indicates that the schedule entry with the given Description.ID
// has been deleted.
//
//
// Optional - Transport analyzer may supply this event. Consumer
// may return E_NOTIMPL.
//
HRESULT ScheduleDeleted(
[in] VARIANT varScheduleEntryDescriptionID
);
}
//******************************************************************************
//
// IGuideDataPropery
//
// {88EC5E58-BB73-41d6-99CE-66C524B8B591}
//
[
object,
uuid(88EC5E58-BB73-41d6-99CE-66C524B8B591),
helpstring("Interface provided by a transport analyzer to represent a guide data property."),
pointer_default(unique)
]
interface IGuideDataProperty : IUnknown
{
[propget] HRESULT Name([out] BSTR *pbstrName);
[propget] HRESULT Language([out] long *idLang);
[propget] HRESULT Value([out] VARIANT *pvar);
}
//******************************************************************************
//
// IEnumGuideDataProperties
//
// {AE44423B-4571-475c-AD2C-F40A771D80EF}
//
[
object,
uuid(AE44423B-4571-475c-AD2C-F40A771D80EF),
helpstring("Interface provided by a transport analyzer to enumerate guide data properties."),
pointer_default(unique)
]
interface IEnumGuideDataProperties : IUnknown
{
HRESULT Next([in] unsigned long celt, [out] IGuideDataProperty **ppprop, [out] unsigned long *pcelt);
HRESULT Skip([in] unsigned long celt);
HRESULT Reset();
HRESULT Clone([out] IEnumGuideDataProperties **ppenum);
}
//******************************************************************************
//
// IEnumTuneRequests
//
// {1993299C-CED6-4788-87A3-420067DCE0C7}
//
[
object,
uuid(1993299C-CED6-4788-87A3-420067DCE0C7),
helpstring("Interface provided by a transport analyzer to enumerate service tune requests ."),
pointer_default(unique)
]
interface IEnumTuneRequests : IUnknown
{
HRESULT Next([in] unsigned long celt, [out] ITuneRequest **ppprop, [out] unsigned long *pcelt);
HRESULT Skip([in] unsigned long celt);
HRESULT Reset();
HRESULT Clone([out] IEnumTuneRequests **ppenum);
}
//******************************************************************************
//
// IGuideData
//
// {61571138-5B01-43cd-AEAF-60B784A0BF93}
//
[
object,
uuid(61571138-5B01-43cd-AEAF-60B784A0BF93),
helpstring("Interface provided by a transport analyzer to supply guide data information."),
pointer_default(unique)
]
interface IGuideData : IUnknown
{
//-------------------------------------------------------------------------
//
// GetServices
// Returns an enumeration of tune requests for all services whose
// information is found in the current transport stream.
//
// Parameters
//
// IEnumTuneRequests **
// Location in which a reference to the resulting
// IEnumTuneRequests is placed. The caller must release
// this reference when finished with it.
//
// Comments
// This call is used to enumerate all services whose information
// can be found in the service descriptor table. Each tune request
// in the IEnumTuneRequest * contains the tune request including the
// locator data for the service.
//
[helpstring("Returns an enumeration of services whose information is found in the given transport stream")]
HRESULT
GetServices (
[out, retval] IEnumTuneRequests ** ppEnumTuneRequests
);
//-------------------------------------------------------------------------
//
// GetServiceProperties
// Returns an enumeration of all guide data properties for
// the service with the given Description.ID.
//
// Parameters
// ITuneRequest *
// Pointer to a tune request that contains information needed
// to indentify the requested transport stream.
// A NULL ITuneRequest * indicates that information about the
// current transport stream is requested.
//
// IEnumGuideDataProperties **
// Location in which a reference to the resulting
// IEnumGuideDataProperties is placed. The caller must release
// this reference when finished with it.
//
// Required Properties
// The following properties MUST be included in the returned
// property enumeration.
//
// Description.ID
// Uniquely identifies a service.
//
// Description.Name
// The default name to use for this service in the channel lineup.
//
// Description.Version
// Identifies the current version of the properties associated
// with this service.
//
// Provider.Name
// Name of the service provider (e.g. "KCTS")
//
// Provider.NetworkName
// Name of the network on which the service is provided.
// (e.g. "PBS")
//
// Service.TuneRequest
// Contains a tune request in the variant
//
//
[helpstring("Returns an enumeration of all guide data properties for the service specified by a tune request.")]
HRESULT
GetServiceProperties (
[in] ITuneRequest * pTuneRequest,
[out, retval] IEnumGuideDataProperties ** ppEnumProperties
);
//-------------------------------------------------------------------------
//
// GetProgramIDs
// Returns an enumeration of the unique identifiers (Description.ID)
// of programs with description contained in all transport
// streams
//
// Parameters
//
// IEnumVARIANT **
// Location in which a reference to the resulting
// IEnumVARIANT is placed. The caller must release
// this reference when finished with it.
//
// Comments
// This call is used to get a list of programs that have
// guide data properties in all transport streams.
// Each variant returned in the IEnumVARIANT * contains the
// unique Description.ID property for a program.
// Note that more than on transport stream may contain properties
// for the same program. In this case the properties should be
// merged.
//
[helpstring("Returns an enumeration of the Description.ID property for all programs on the given transport stream.")]
HRESULT
GetGuideProgramIDs (
[out, retval] IEnumVARIANT ** pEnumPrograms
);
//-------------------------------------------------------------------------
//
// GetProgramProperties
// Returns an enumeration of all guide data properties for
// the program with the given Description.ID.
//
// Parameters
// varProgramDescriptionID
// Variant containing the unique identifier for the program
// for which properties are requested.
//
// IEnumGuideDataProperties **
// Location in which a reference to the resulting
// IEnumGuideDataProperties is placed. The caller must release
// this reference when finished with it.
//
// Required Properties
// The following properties MUST be included in the returned
// property enumeration.
//
// Description.ID
// Uniquely identifies a program.
//
// Description.Version
// Identifies the current version of the properties associated
// with this program.
//
// Description.Title
// Human readable title of the program (e.g. "")
//
// Description.Long
// A description of the program.
//
[helpstring("Returns an enumeration of all guide data properties for the program with the given Description.ID.")]
HRESULT
GetProgramProperties (
[in] VARIANT varProgramDescriptionID,
[out, retval] IEnumGuideDataProperties ** ppEnumProperties
);
//-------------------------------------------------------------------------
//
// GetScheduleIDs
// Returns an enumeration of the unique identifiers (Description.ID)
// transport of schedule entries with description contained in the
// given transport stream.
//
// Parameters
//
// IEnumVARIANT **
// Location in which a reference to the resulting
// IEnumVARIANT is placed. The caller must release
// this reference when finished with it.
//
// Comments
// This call is used to get a list of schedule entries that have
// guide data properties in all transport streams.
// Each variant returned in the IEnumVARIANT * contains the
// unique Description.ID property for a schedule entry.
// Note that more than on transport stream may contain properties
// for the same schedule entry. In this case the properties
// should be merged.
//
[helpstring("Returns an enumeration of the Description.ID property for all schedule entries in the transport stream specified by a tune request.")]
HRESULT
GetScheduleEntryIDs (
[out, retval] IEnumVARIANT ** pEnumScheduleEntries
);
//-------------------------------------------------------------------------
//
// GetScheduleEntryProperties
// Returns an enumeration of all guide data properties for
// the schedule entry with the given Description.ID.
//
// Parameters
// varScheduleEntryDescriptionID
// Variant containing the unique identifier for the schedule
// entry for which properties are requested.
//
// IEnumGuideDataProperties **
// Location in which a reference to the resulting
// IEnumGuideDataProperties is placed. The caller must release
// this reference when finished with it.
//
// Required Properties
// The following properties MUST be included in the returned
// property enumeration.
//
// Description.ID
// Uniquely identifies a schedule entry.
//
// Description.Version
// Identifies the current version of the properties associated
// with this program.
//
// Time.Start
// The starting time and date of this schedule entry.
//
// Time.End
// The ending time and date of this schedule entry.
//
// Schedule.Program
// The Description.ID of the program that will play at the
// time specified by this schedule entry.
//
// Schedule.Service
// The Description.ID of the Service that carries the
// program that will play at the time specified by this
// schedule entry.
//
[helpstring("Returns an enumeration of all guide data properties for the schedule entry with the given Description.ID.")]
HRESULT
GetScheduleEntryProperties (
[in] VARIANT varScheduleEntryDescriptionID,
[out, retval] IEnumGuideDataProperties ** ppEnumProperties
);
}
//******************************************************************************
//
// IGuideDataLoader
//
// All Guide Data Loaders MUST implement this interface. It is how they are
// provided with the IGuideData interface that they will use.
//
// {4764ff7c-fa95-4525-af4d-d32236db9e38}
[
object,
uuid(4764ff7c-fa95-4525-af4d-d32236db9e38),
helpstring("IGuideDataLoader Interface"),
pointer_default(unique)
]
interface IGuideDataLoader : IUnknown
{
HRESULT Init([in] IGuideData *pGuideStore);
HRESULT Terminate();
};
[
uuid(8224A083-7F8C-432D-B83E-3C5E9BDE3528),
version(1.0),
helpstring("psisload 1.0 Type Library")
]
library PSISLOADLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(14EB8748-1753-4393-95AE-4F7E7A87AAD6),
helpstring("TIFLoad Class")
]
coclass TIFLoad
{
interface IGuideDataLoader;
interface IGuideDataEvent;
};
};
cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#pragma warning(default:4201) /* Nameless struct/union */")
cpp_quote("#endif")

View File

@ -0,0 +1,303 @@
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Module Name:
//
// Mpeg2Data.idl
//
// Abstract:
//
// Main Mpeg2Data Library Definition, and interface definitions for
// the MPEG-2 Section and Table acquisition functionality
//
/////////////////////////////////////////////////////////////////////////////
// Import Files
import "oaidl.idl";
import "ocidl.idl";
import "bdaiface.idl";
// Specify single byte packing alignment
#pragma pack(push)
#pragma pack(1)
// Forward interface declarations
interface ISectionList;
interface IMpeg2Stream;
// Declare well known PID/TID values for MPEG-2 tables
cpp_quote("#define MPEG_PAT_PID 0x0000")
cpp_quote("#define MPEG_PAT_TID 0x00")
cpp_quote("#define MPEG_CAT_PID 0x0001")
cpp_quote("#define MPEG_CAT_TID 0x01")
cpp_quote("#define MPEG_PMT_TID 0x02")
cpp_quote("#define MPEG_TSDT_PID 0x0002")
cpp_quote("#define MPEG_TSDT_TID 0x03")
// Declare well known PID/TID values for ATSC tables
cpp_quote("#define ATSC_MGT_PID 0x1FFB")
cpp_quote("#define ATSC_MGT_TID 0xC7")
cpp_quote("#define ATSC_VCT_PID 0x1FFB")
cpp_quote("#define ATSC_VCT_TERR_TID 0xC8")
cpp_quote("#define ATSC_VCT_CABL_TID 0xC9")
cpp_quote("#define ATSC_RRT_PID 0x1FFB")
cpp_quote("#define ATSC_RRT_TID 0xCA")
cpp_quote("#define ATSC_EIT_TID 0xCB")
cpp_quote("#define ATSC_ETT_TID 0xCC")
cpp_quote("#define ATSC_STT_PID 0x1FFB")
cpp_quote("#define ATSC_STT_TID 0xCD")
cpp_quote("#define ATSC_PIT_TID 0xD0")
// Declare well known PID/TID values for DVB tables
cpp_quote("#define DVB_NIT_PID 0x0010")
cpp_quote("#define DVB_NIT_ACTUAL_TID 0x40")
cpp_quote("#define DVB_NIT_OTHER_TID 0x41")
cpp_quote("#define DVB_SDT_PID 0x0011")
cpp_quote("#define DVB_SDT_ACTUAL_TID 0x42")
cpp_quote("#define DVB_SDT_OTHER_TID 0x46")
cpp_quote("#define DVB_BAT_PID 0x0011")
cpp_quote("#define DVB_BAT_TID 0x4A")
cpp_quote("#define DVB_EIT_PID 0x0012")
cpp_quote("#define DVB_EIT_ACTUAL_TID 0x4E")
cpp_quote("#define DVB_EIT_OTHER_TID 0x4F")
cpp_quote("#define DVB_RST_PID 0x0013")
cpp_quote("#define DVB_RST_TID 0x71")
cpp_quote("#define DVB_TDT_PID 0x0014")
cpp_quote("#define DVB_TDT_TID 0x70")
cpp_quote("#define DVB_ST_PID_16 0x0010")
cpp_quote("#define DVB_ST_PID_17 0x0011")
cpp_quote("#define DVB_ST_PID_18 0x0012")
cpp_quote("#define DVB_ST_PID_19 0x0013")
cpp_quote("#define DVB_ST_PID_20 0x0014")
cpp_quote("#define DVB_ST_TID 0x72")
cpp_quote("#define DVB_TOT_PID 0x0014")
cpp_quote("#define DVB_TOT_TID 0x73")
cpp_quote("#define DVB_DIT_PID 0x001E")
cpp_quote("#define DVB_DIT_TID 0x7E")
cpp_quote("#define DVB_SIT_PID 0x001F")
cpp_quote("#define DVB_SIT_TID 0x7F")
// Declare well known PID/TID values for ISDB tables
cpp_quote("#define ISDB_DCT_PID 0x0017")
cpp_quote("#define ISDB_DCT_TID 0xC0")
cpp_quote("#define ISDB_LIT_PID 0x0020")
cpp_quote("#define ISDB_LIT_TID 0xD0")
cpp_quote("#define ISDB_ERT_PID 0x0021")
cpp_quote("#define ISDB_ERT_TID 0xD1")
cpp_quote("#define ISDB_ITT_TID 0xD2")
cpp_quote("#define ISDB_DLT_TID 0xC1")
cpp_quote("#define ISDB_PCAT_PID 0x0022")
cpp_quote("#define ISDB_PCAT_TID 0xC2")
cpp_quote("#define ISDB_SDTT_PID 0x0023")
cpp_quote("#define ISDB_SDTT_TID 0xC3")
////////////////////////////////////
//
// Mpeg2DataLib Library
//
////////////////////////////////////
cpp_quote("class DECLSPEC_UUID(\"DBAF6C1B-B6A4-4898-AE65-204F0D9509A1\") Mpeg2DataLib;")
[
uuid(DBAF6C1B-B6A4-4898-AE65-204F0D9509A1),
version(1.0)
]
library Mpeg2DataLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
// Include related interface definition files so that everything ends up
// in the same library. Note that the order in which these files are
// included is important, so do not rearrange them arbitrarily
#include "Mpeg2Structs.idl"
#ifdef MPEG2_FUTURE_CODE // Not available in DX9
#include "Mpeg2PsiParser.idl"
#include "AtscPsipParser.idl"
#include "DvbSiParser.idl"
#endif
////////////////////////////////////
//
// IMpeg2Data Interface
//
////////////////////////////////////
[
object,
uuid(9B396D40-F380-4e3c-A514-1A82BF6EBFE6),
pointer_default(unique)
]
interface IMpeg2Data : IUnknown
{
HRESULT GetSection([in] PID pid,
[in] TID tid,
[in] PMPEG2_FILTER pFilter, // OPTIONAL
[in] DWORD dwTimeout,
[out] ISectionList ** ppSectionList);
HRESULT GetTable([in] PID pid,
[in] TID tid,
[in] PMPEG2_FILTER pFilter, // OPTIONAL
[in] DWORD dwTimeout,
[out] ISectionList ** ppSectionList);
HRESULT GetStreamOfSections([in] PID pid,
[in] TID tid,
[in] PMPEG2_FILTER pFilter, // OPTIONAL
[in] HANDLE hDataReadyEvent,
[out] IMpeg2Stream ** ppMpegStream);
};
////////////////////////////////////
//
// ISectionList Interface
//
////////////////////////////////////
[
object,
uuid(AFEC1EB5-2A64-46c6-BF4B-AE3CCB6AFDB0),
pointer_default(unique)
]
interface ISectionList : IUnknown
{
HRESULT Initialize([in] MPEG_REQUEST_TYPE requestType,
[in] IMpeg2Data * pMpeg2Data,
[in] PMPEG_CONTEXT pContext,
[in] PID pid,
[in] TID tid,
[in] PMPEG2_FILTER pFilter, // OPTIONAL
[in] DWORD timeout,
[in] HANDLE hDoneEvent); // OPTIONAL
HRESULT InitializeWithRawSections([in] PMPEG_PACKET_LIST pmplSections);
HRESULT CancelPendingRequest(void);
HRESULT GetNumberOfSections([out] WORD * pCount);
HRESULT GetSectionData([in] WORD sectionNumber,
[out] DWORD * pdwRawPacketLength,
[out] PSECTION * ppSection);
HRESULT GetProgramIdentifier(PID * pPid);
HRESULT GetTableIdentifier(TID * pTableId);
};
////////////////////////////////////
//
// IMpeg2Stream Interface
//
////////////////////////////////////
[
object,
uuid(400CC286-32A0-4ce4-9041-39571125A635),
pointer_default(unique)
]
interface IMpeg2Stream : IUnknown
{
HRESULT Initialize([in] MPEG_REQUEST_TYPE requestType,
[in] IMpeg2Data * pMpeg2Data,
[in] PMPEG_CONTEXT pContext,
[in] PID pid,
[in] TID tid,
[in] PMPEG2_FILTER pFilter, // OPTIONAL
[in] HANDLE hDataReadyEvent);
HRESULT SupplyDataBuffer([in] PMPEG_STREAM_BUFFER pStreamBuffer);
};
////////////////////////////////////
//
// SectionList CoClass
//
////////////////////////////////////
[
uuid(73DA5D04-4347-45d3-A9DC-FAE9DDBE558D)
]
coclass SectionList
{
[default] interface ISectionList;
};
////////////////////////////////////
//
// Mpeg2Stream CoClass
//
////////////////////////////////////
[
uuid(F91D96C7-8509-4d0b-AB26-A0DD10904BB7)
]
coclass Mpeg2Stream
{
[default] interface IMpeg2Stream;
};
////////////////////////////////////
//
// Mpeg2Data CoClass
//
////////////////////////////////////
[
uuid(C666E115-BB62-4027-A113-82D643FE2D99)
]
coclass Mpeg2Data
{
[default] interface IMpeg2Data;
#ifdef MPEG2_FUTURE_CODE // Not available in DX9
interface IAtscPsipParser;
interface IDvbSiParser;
#endif
};
};
// Return to default packing
#pragma pack(pop)

View File

@ -0,0 +1,368 @@
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Module Name:
//
// Mpeg2Structs.idl
//
// Abstract:
//
// Definitions for the common structures used in Mpeg2Data
//
// Notes:
//
// This IDL file is not built independently, but is included and built
// in the master IDL file Mpeg2Data.idl
//
/////////////////////////////////////////////////////////////////////////////
// Include Files
#include "Mpeg2Bits.h"
//
// Basic Type Aliases
//
typedef WORD PID;
typedef BYTE TID;
typedef UINT ClientKey;
//
// MPEG-2 Current/Next bit field
//
typedef enum
{
MPEG_SECTION_IS_NEXT = 0,
MPEG_SECTION_IS_CURRENT = 1
} MPEG_CURRENT_NEXT_BIT;
//
// MPEG-2 TID Extension structure
//
typedef struct
{
WORD wTidExt;
WORD wCount;
} TID_EXTENSION, *PTID_EXTENSION;
//
// MPEG-2 packet "small" header structure
//
typedef struct
{
TID TableId;
union
{
MPEG_HEADER_BITS_MIDL S;
WORD W;
} Header;
BYTE SectionData[1]; // Array size is Header.S.SectionLength
} SECTION, *PSECTION;
//
// MPEG-2 packet "long" header structure
//
typedef struct
{
TID TableId;
union
{
MPEG_HEADER_BITS_MIDL S;
WORD W;
} Header;
WORD TableIdExtension;
union
{
MPEG_HEADER_VERSION_BITS_MIDL S;
BYTE B;
} Version;
BYTE SectionNumber;
BYTE LastSectionNumber;
BYTE RemainingData[1]; // Array size is Header.S.SectionLength - 5
} LONG_SECTION, *PLONG_SECTION;
//
// DSM-CC packet header structure
//
typedef struct
{
TID TableId;
union
{
MPEG_HEADER_BITS_MIDL S;
WORD W;
} Header;
WORD TableIdExtension;
union
{
MPEG_HEADER_VERSION_BITS_MIDL S;
BYTE B;
} Version;
BYTE SectionNumber;
BYTE LastSectionNumber;
BYTE ProtocolDiscriminator;
BYTE DsmccType;
WORD MessageId;
DWORD TransactionId;
BYTE Reserved;
BYTE AdaptationLength;
WORD MessageLength;
BYTE RemainingData[1];
} DSMCC_SECTION, *PDSMCC_SECTION;
//
// MPEG-2 request/response packets structures
//
typedef struct
{
DWORD dwLength;
PSECTION pSection;
} MPEG_RQST_PACKET, *PMPEG_RQST_PACKET;
typedef struct
{
WORD wPacketCount;
PMPEG_RQST_PACKET PacketList[1]; // Array size is wPacketCount;
} MPEG_PACKET_LIST, *PMPEG_PACKET_LIST;
//
// DSM-CC request filter options
//
typedef struct
{
BOOL fSpecifyProtocol; // If true, Protocol should be set to desired value
BYTE Protocol;
BOOL fSpecifyType; // If true, Type should be set to desired value
BYTE Type;
BOOL fSpecifyMessageId; // If true, MessageId should be set to desired value
WORD MessageId;
BOOL fSpecifyTransactionId; // If true, TransactionId (or DownloadId for DDB msgs) should be set to desired value
BOOL fUseTrxIdMessageIdMask; // If false, TransactionId is filtered as is.
// If true, TransactionId is masked to look
// for any version of message with associated
// message identifier. See DVB - Data
// Broadcasting Guidlines 4.6.5. (Assignment
// and use of transactionId values).
DWORD TransactionId;
BOOL fSpecifyModuleVersion; // If true, ModuleVersion should be set to the desired value
BYTE ModuleVersion;
BOOL fSpecifyBlockNumber; // If true, BlockNumber should be set to desired value
WORD BlockNumber;
BOOL fGetModuleCall; // If true, NumberOfBlocksInModule should be set
WORD NumberOfBlocksInModule;
} DSMCC_FILTER_OPTIONS;
// 45 BYTES
//
// ATSC request filter options
//
typedef struct
{
BOOL fSpecifyEtmId; // If true, EtmId should be set to desired value
DWORD EtmId;
} ATSC_FILTER_OPTIONS;
// 8 BYTES
//
// MPEG-2 request filter structure
//
typedef struct
{
BYTE bVersionNumber; // Must be set to 1 or more to match filter definition
WORD wFilterSize; // Size of total filter structure. Version 1 filter is 73 bytes.
BOOL fUseRawFilteringBits; // If true, Filter and Mask fields should be set to desired value, all other
// fields with be ignored.
BYTE Filter[16]; // Bits with values to compare against for a match.
BYTE Mask[16]; // Bits set to 0 are bits that are compared to those in the filter, those
// bits set to 1 are ignored.
BOOL fSpecifyTableIdExtension; // If true, TableIdExtension should be set to desired value (false = don't care)
WORD TableIdExtension;
BOOL fSpecifyVersion; // If true, Version should be set to desired value (false = don't care)
BYTE Version;
BOOL fSpecifySectionNumber; // If true, SectionNumber should be set to desired value (false = don't care)
BYTE SectionNumber;
BOOL fSpecifyCurrentNext; // If true, fNext should be set to desired value (false = don't care)
BOOL fNext; // If true, next table is queried. Else, current
BOOL fSpecifyDsmccOptions; // If true, Dsmcc should be set with desired filter options
DSMCC_FILTER_OPTIONS Dsmcc;
BOOL fSpecifyAtscOptions; // If true, Atsc should be set with desired filter options
ATSC_FILTER_OPTIONS Atsc;
} MPEG2_FILTER, *PMPEG2_FILTER;
// 124 BYTES
cpp_quote("#define MPEG2_FILTER_VERSION_1_SIZE 124")
//
// Mpeg-2 Stream buffer structure
//
typedef struct
{
HRESULT hr;
DWORD dwDataBufferSize;
DWORD dwSizeOfDataRead;
BYTE * pDataBuffer;
} MPEG_STREAM_BUFFER, *PMPEG_STREAM_BUFFER;
//
// MPEG-2 Time and Date structures
//
typedef struct
{
BYTE Hours; // Legal Range: 0 to 23
BYTE Minutes; // Legal Range: 0 to 59
BYTE Seconds; // Legal Range: 0 to 59
} MPEG_TIME;
typedef MPEG_TIME MPEG_DURATION;
typedef struct
{
BYTE Date; // Legal Range: 1 to 31
BYTE Month; // Legal Range: 1 to 12
WORD Year; // Legal Range: 1900 to 2100
} MPEG_DATE;
typedef struct
{
MPEG_DATE D;
MPEG_TIME T;
} MPEG_DATE_AND_TIME;
//
// MPEG-2 API Context structures
//
typedef enum
{
MPEG_CONTEXT_BCS_DEMUX,
MPEG_CONTEXT_WINSOCK
} MPEG_CONTEXT_TYPE;
typedef struct
{
DWORD AVMGraphId;
} MPEG_BCS_DEMUX;
typedef struct
{
DWORD AVMGraphId;
} MPEG_WINSOCK;
typedef struct
{
MPEG_CONTEXT_TYPE Type;
union
{
MPEG_BCS_DEMUX Demux;
MPEG_WINSOCK Winsock;
} U;
} MPEG_CONTEXT, *PMPEG_CONTEXT;
//
// MPEG-2 Service Request and Responses
//
typedef enum
{
MPEG_RQST_UNKNOWN = 0,
MPEG_RQST_GET_SECTION,
MPEG_RQST_GET_SECTION_ASYNC,
MPEG_RQST_GET_TABLE,
MPEG_RQST_GET_TABLE_ASYNC,
MPEG_RQST_GET_SECTIONS_STREAM,
MPEG_RQST_GET_PES_STREAM,
MPEG_RQST_GET_TS_STREAM,
MPEG_RQST_START_MPE_STREAM,
} MPEG_REQUEST_TYPE;
typedef struct
{
MPEG_REQUEST_TYPE Type;
MPEG_CONTEXT Context;
PID Pid;
TID TableId;
MPEG2_FILTER Filter;
DWORD Flags;
} MPEG_SERVICE_REQUEST, *PMPEG_SERVICE_REQUEST;
typedef struct
{
DWORD IPAddress;
WORD Port;
} MPEG_SERVICE_RESPONSE, *PMPEG_SERVICE_RESPONSE;
//
// DSM-CC & MPE Query Results
//
typedef struct _DSMCC_ELEMENT
{
PID pid;
BYTE bComponentTag;
DWORD dwCarouselId;
DWORD dwTransactionId;
struct _DSMCC_ELEMENT * pNext;
} DSMCC_ELEMENT, *PDSMCC_ELEMENT;
typedef struct _MPE_ELEMENT
{
PID pid;
BYTE bComponentTag;
struct _MPE_ELEMENT * pNext;
} MPE_ELEMENT, *PMPE_ELEMENT;
//
// MPEG-2 Stream Filtering Structure
//
typedef struct _MPEG_STREAM_FILTER
{
WORD wPidValue; // PID value
DWORD dwFilterSize; // size of filter in bits
BOOL fCrcEnabled; // enable/disable CRC check
BYTE rgchFilter[16]; // filter data
BYTE rgchMask[16]; // filter mask
} MPEG_STREAM_FILTER;

View File

@ -0,0 +1,840 @@
// MSTvCA.idl : IDL source for MSTvCA.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (CA.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
#include "olectl.h"
/* [
object,
dual,
uuid(49a32d3c-7d85-11d2-8895-00c04f794967),
helpstring("ITuneRequest Interface"),
pointer_default(unique)
]
interface ITuneRequest : IDispatch
{
};
*/
import "tuner.idl"; // includes the whole BDA world! Yecko!
interface ICAManager;
interface ICARequest;
interface ICAPolicy;
interface ICAPolicies;
interface ICAPoliciesInternal;
interface ICAToll;
interface ICATolls;
interface ICATollsInternal;
interface ICADenial;
interface ICADenials;
interface ICAOffer;
interface ICAOffers;
interface ICAComponent;
interface ICAComponents;
#define COLLECTID_Item 0
#define COLLECTID_Count 1
#define COLLECTID_Add 2
#define COLLECTID_Remove 3
#define COLLECTID_AddNew 4
#define COLLECTID_CountDenied 5 // ICADenials
#define COLLECTID_CountSelected 6 // ICADenials
#define COLLECTID_PaySelectedTolls 7 // ICADenials
typedef enum
{
Unselected = 0,
Selected = 1
} CATollState;
typedef enum
{
Denied = 0,
Transient = 1,
// Allowed = 2,
DescriptionShort = 10, // one of the description fields changed
DescriptionLong = 11, // via a ICADenial::put_Description()
DescriptionHTML = 12, //
DescriptionXML = 13 // (keep these current+10 with list below...)
} CADenialState;
typedef enum
{
Short = 0, // must be numeric, starting at 0. (Used as array index).
Long = 1, // in approximatly order of length in bytes
URL = 2,
HTML = 3,
XML = 4,
kDescEnd = 5 // invalid format, 1+ last real one (Used as array length).
} CADescFormat;
typedef enum
{
Request = 1,
ComponentX = 2,
Offers = 4,
PaidTolls = 8,
Policies = 16,
Standard = 15, // all put the policies
All = 31 // all
} CAUIDisplayFields;
// ---------------------------------------------------------------
// if add methods to ICAManagerInternal, be sure to add MAGICCALL in CAManagerProxy too..
// ---------------------------------------------------------------
[
object,
uuid(11166301-DF8A-463a-B620-7BEC23542010),
dual, // Helpers are Dual, IUnknown... so see from VB
hidden, restricted,
helpstring("ICAManagerInternal Interface"),
pointer_default(unique)
]
interface ICAManagerInternal : IUnknown
{
[ id(1), helpstring("method Save")] HRESULT Save();
[ id(2), helpstring("method Load")] HRESULT Load();
[propput, id(3), helpstring("property MarkDirty")] HRESULT MarkDirty([in] BOOL fDirty);
[propget, id(3), helpstring("property MarkDirty")] HRESULT MarkDirty([out, retval] BOOL *pfDirty);
[propput, id(4), helpstring("property TuneRequest")] HRESULT TuneRequest([in] ITuneRequest *ptunereq);
[ id(5), helpstring("method GetDefaultUI")] HRESULT GetDefaultUI([out] HWND *phwnd);
[ id(6), helpstring("method SetDefaultUI")] HRESULT SetDefaultUI([in] HWND hwnd);
// return the main CAManager object, not the proxy one.
[propget, id(7), helpstring("property CAManagerMain")] HRESULT CAManagerMain([out,retval] ICAManager **ppManagerMain);
[propput, id(8), helpstring("property BroadcastEventService")] HRESULT BroadcastEventService([in] IBroadcastEvent *pBroadcastEventService);
[propget, id(8), helpstring("property BroadcastEventService")] HRESULT BroadcastEventService([out, retval] IBroadcastEvent **ppBroadcastEventService);
[ id(9), helpstring("method DisplayDefaultUI")] HRESULT DisplayDefaultUI([in] VARIANT_BOOL fDisplay);
[ id(10), helpstring("method EnableDefaultUIPayTollsButton")] HRESULT EnableDefaultUIPayTollsButton([in] VARIANT_BOOL fEnabled);
[ id(11), helpstring("method UpdateDefaultUIForToll")] HRESULT UpdateDefaultUIForToll([in] ICAToll *pToll,[in] CATollState enState);
[propput, id(12), helpstring("property TuneRequestInt")] HRESULT TuneRequestInt([in] ITuneRequest *ptunereq);
[ id(13), helpstring("method AddDenialsFor")] HRESULT AddDenialsFor([in] IUnknown *pUnk); // see also ICAManager::get_DenialsFor()
[ id(14), helpstring("method RemoveDenialsFor")] HRESULT RemoveDenialsFor([in] IUnknown *pUnk);
[ id(2201),helpstring("method NotifyRequestActivated")] HRESULT NotifyRequestActivated([in] ICARequest *pReq);
[ id(2202),helpstring("method NotifyRequestDeactivated")] HRESULT NotifyRequestDeactivated([in] ICARequest *pReq);
[ id(2203),helpstring("method NotifyOfferAdded")] HRESULT NotifyOfferAdded([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2204),helpstring("method NotifyOfferRemoved")] HRESULT NotifyOfferRemoved([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2205),helpstring("method NotifyPolicyAdded")] HRESULT NotifyPolicyAdded([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2206),helpstring("method NotifyPolicyRemoved")] HRESULT NotifyPolicyRemoved([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2207),helpstring("method NotifyRequestDenialAdded")] HRESULT NotifyRequestDenialAdded([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2208),helpstring("method NotifyRequestDenialRemoved")] HRESULT NotifyRequestDenialRemoved([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2209),helpstring("method NotifyDenialTollAdded")] HRESULT NotifyDenialTollAdded([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2210),helpstring("method NotifyDenialTollRemoved")] HRESULT NotifyDenialTollRemoved([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2211),helpstring("method NotifyTollDenialAdded")] HRESULT NotifyTollDenialAdded([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2212),helpstring("method NotifyTollDenialRemoved")] HRESULT NotifyTollDenialRemoved([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2213),helpstring("method NotifyOfferTollAdded")] HRESULT NotifyOfferTollAdded([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2214),helpstring("method NotifyOfferTollRemoved")] HRESULT NotifyOfferTollRemoved([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2215),helpstring("method NotifyTollStateChanged")] HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateLast);
[ id(2216),helpstring("method NotifyDenialStateChanged")] HRESULT NotifyDenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enStateLast);
[ id(2217),helpstring("method NotifyComponentDenialAdded")] HRESULT NotifyComponentDenialAdded([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2218),helpstring("method NotifyComponentDenialRemoved")] HRESULT NotifyComponentDenialRemoved([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);
};
[
object,
uuid(11166302-DF8A-463a-B620-7BEC23542010),
dual, // Helpers are Dual, IUnknown... so see from VB
hidden, restricted,
helpstring("ICAManagerXProxy Interface"),
pointer_default(unique)
]
interface ICAManagerXProxy : IUnknown
{
[propget, id(1), helpstring("property PunkCAManagerProxy")] HRESULT PunkCAManagerProxy([out,retval] IUnknown **ppUnkCAManagerProxy);
[ id(2201),helpstring("method NotifyRequestActivated_XProxy")] HRESULT NotifyRequestActivated_XProxy([in] ICARequest *pReq);
[ id(2202),helpstring("method NotifyRequestDeactivated_XProxy")] HRESULT NotifyRequestDeactivated_XProxy([in] ICARequest *pReq);
[ id(2203),helpstring("method NotifyOfferAdded_XProxy")] HRESULT NotifyOfferAdded_XProxy([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2204),helpstring("method NotifyOfferRemoved_XProxy")] HRESULT NotifyOfferRemoved_XProxy([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2205),helpstring("method NotifyPolicyAdded_XProxy")] HRESULT NotifyPolicyAdded_XProxy([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2206),helpstring("method NotifyPolicyRemoved_XProxy")] HRESULT NotifyPolicyRemoved_XProxy([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2207),helpstring("method NotifyRequestDenialAdded_XProxy")] HRESULT NotifyRequestDenialAdded_XProxy([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2208),helpstring("method NotifyRequestDenialRemoved_XProxy")] HRESULT NotifyRequestDenialRemoved_XProxy([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2209),helpstring("method NotifyDenialTollAdded_XProxy")] HRESULT NotifyDenialTollAdded_XProxy([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2210),helpstring("method NotifyDenialTollRemoved_XProxy")] HRESULT NotifyDenialTollRemoved_XProxy([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2211),helpstring("method NotifyTollDenialAdded_XProxy")] HRESULT NotifyTollDenialAdded_XProxy([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2212),helpstring("method NotifyTollDenialRemoved_XProxy")] HRESULT NotifyTollDenialRemoved_XProxy([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2213),helpstring("method NotifyOfferTollAdded_XProxy")] HRESULT NotifyOfferTollAdded_XProxy([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2214),helpstring("method NotifyOfferTollRemoved_XProxy")] HRESULT NotifyOfferTollRemoved_XProxy([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2215),helpstring("method NotifyTollStateChanged_XProxy")] HRESULT NotifyTollStateChanged_XProxy([in] ICAToll *pToll, [in] CATollState enStateLast);
[ id(2216),helpstring("method NotifyDenialStateChanged_XProxy")] HRESULT NotifyDenialStateChanged_XProxy([in] ICADenial *pDenial, [in] CADenialState enStateLast);
[ id(2217),helpstring("method NotifyComponentDenialAdded_XProxy")] HRESULT NotifyComponentDenialAdded_XProxy([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2218),helpstring("method NotifyComponentDenialRemoved_XProxy")] HRESULT NotifyComponentDenialRemoved_XProxy([in] ICAComponent *pReq, [in] ICADenial *pDenial,[in] long cDenials);
};
// ---------------------------------------------------------------
// ---------------------------------------------------------------
[
object,
uuid(11166420-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAPolicies Interface"),
pointer_default(unique)
]
interface ICAPolicies : IDispatch
{
[propget, id(DISPID_NEWENUM), restricted] HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
[propget, id(COLLECTID_Count)] HRESULT Count([out, retval] long *Count);
[propget, id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] ICAPolicy **ppPolicy);
[ id(COLLECTID_Add)] HRESULT Add([in] ICAPolicy *pPolicy);
[ id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT Index);
};
[ object,
uuid(11166421-DF8A-463a-B620-7BEC23542010),
dual,
hidden, restricted,
helpstring("ICAPoliciesInternal Interface"),
pointer_default(unique)
]
interface ICAPoliciesInternal : IUnknown
{
[id(1),helpstring("method SetCAManager")] HRESULT SetCAManager([in] ICAManager *pManager);
[id(2),helpstring("method CheckRequest")] HRESULT CheckRequest([in] ICARequest *pReq);
};
// ---------------------------------------------------------------
[
object,
uuid(11166430-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICATolls Interface"),
pointer_default(unique)
]
interface ICATolls : IDispatch
{
[propget, id(DISPID_NEWENUM), restricted] HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
[propget, id(COLLECTID_Count)] HRESULT Count([out, retval] long *Count);
[propget, id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] ICAToll **ppToll);
[ id(COLLECTID_Add)] HRESULT Add([in] ICAToll *pToll);
[ id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT Index);
};
[
object,
uuid(11166431-DF8A-463a-B620-7BEC23542010),
dual,
hidden, restricted,
helpstring("ICATolls Internal Interface"),
pointer_default(unique)
]
interface ICATollsInternal : IUnknown // workaround for not being able to get _ICAResDenialEvents to work
{
[ id(1),helpstring("method SetCAManager")] HRESULT SetCAManager([in] ICAManager *pManager);
[ id(2),helpstring("method GetCAManager")] HRESULT GetCAManager([out] ICAManager **ppManager);
[ id(3),helpstring("method SetMustPersist")] HRESULT SetMustPersist([in] BOOL fMustPersist);
[ id(4),helpstring("method Save")] HRESULT Save([in] IStorage *pstore,[in] BSTR bstrPrefix);
[ id(5),helpstring("method Load")] HRESULT Load([in] IStorage *pstore,[in] BSTR bstrPrefix);
[ id(6),helpstring("method NotifyStateChanged")] HRESULT NotifyStateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
[ id(7),helpstring("method NotifyTollSelectionChanged")] HRESULT NotifyTollSelectionChanged([in] ICAToll *pToll, [in] BOOL fSelected);
};
// ---------------------------------------------------------------
[
object,
uuid(11166440-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICADenials Interface"),
pointer_default(unique)
]
interface ICADenials : IDispatch
{
[propget, id(DISPID_NEWENUM), restricted] HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
[propget, id(COLLECTID_Count) ] HRESULT Count([out, retval] long *Count);
[propget, id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] ICADenial **ppDenial);
[propget, id(COLLECTID_AddNew), helpstring("property AddNew")] HRESULT AddNew([in] ICAPolicy *ppolicy, [in] BSTR bstrShortDesc, [in] IUnknown *pUnkDeniedObject, [in] long enDenialState, [out, retval] ICADenial **ppDenial);
[ id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT Index);
[propget, id(COLLECTID_CountDenied)] HRESULT CountDenied([out, retval] long *Count);
[propget, id(COLLECTID_CountSelected)] HRESULT CountSelected([out, retval] long *Count);
[ id(COLLECTID_PaySelectedTolls)] HRESULT PaySelectedTolls();
};
[
object,
uuid(11166441-DF8A-463a-B620-7BEC23542010),
dual,
hidden, restricted,
helpstring("ICADenialsInternal Interface"),
pointer_default(unique)
]
interface ICADenialsInternal : IUnknown
{
[ id(1),helpstring("method SetCAManager")] HRESULT SetCAManager([in] ICAManager *pManager);
[ id(2),helpstring("method NotifyDenialStateChanged")] HRESULT NotifyDenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enStateLast);
};
// ---------------------------------------------------------------
[
object,
uuid(11166450-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAOffers Interface"),
pointer_default(unique)
]
interface ICAOffers : IDispatch
{
[propget, id(DISPID_NEWENUM) , restricted] HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
[propget, id(COLLECTID_Count)] HRESULT Count([out, retval] long *Count);
[propget, id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] ICAOffer **ppOffer);
[propget, id(COLLECTID_AddNew), helpstring("property AddNew")] HRESULT AddNew([in] ICAPolicy *pPolicy, [in] BSTR bstrName, [in] DATE dateStart, [in] DATE dateEnd, [out, retval] ICAOffer **ppOffer);
[ id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT Index);
};
[
object,
uuid(11166470-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAComponents Interface"),
pointer_default(unique)
]
interface ICAComponents : IDispatch
{
[propget, id(DISPID_NEWENUM) , restricted] HRESULT _NewEnum([out, retval] IUnknown **ppCollection);
[propget, id(COLLECTID_Count)] HRESULT Count([out, retval] long *Count);
[propget, id(COLLECTID_Item)] HRESULT Item([in] VARIANT Index, [out, retval] ICAComponent **ppComponent);
// [ id(COLLECTID_Add)] HRESULT Add([in] ICAComponent *pComponent);
// [ id(COLLECTID_Remove)] HRESULT Remove([in] VARIANT Index);
};
[
object,
uuid(11166361-DF8A-463a-B620-7BEC23542010),
dual,
hidden,
helpstring("ICAComponentInternal Interface"),
pointer_default(unique)
]
interface ICAComponentInternal : IUnknown
{
[ id(1), helpstring("method RemoveAllDenials")] HRESULT RemoveAllDenials();
[propget, id(2), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstrDescription);
};
// ---------------------------------------------------------------
[
object,
uuid(860A3FE2-DED1-40E2-896C-057681A8A1A8),
dual,
helpstring("ICADefaultDlg Interface"),
pointer_default(unique)
]
interface ICADefaultDlg : IDispatch
{
[propput, id(DISPID_AUTOSIZE)]
HRESULT AutoSize([in]VARIANT_BOOL vbool);
[propget, id(DISPID_AUTOSIZE)]
HRESULT AutoSize([out,retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_BACKCOLOR)]
HRESULT BackColor([in]OLE_COLOR clr);
[propget, id(DISPID_BACKCOLOR)]
HRESULT BackColor([out,retval]OLE_COLOR* pclr);
[propput, id(DISPID_BACKSTYLE)]
HRESULT BackStyle([in]long style);
[propget, id(DISPID_BACKSTYLE)]
HRESULT BackStyle([out,retval]long* pstyle);
[propput, id(DISPID_BORDERCOLOR)]
HRESULT BorderColor([in]OLE_COLOR clr);
[propget, id(DISPID_BORDERCOLOR)]
HRESULT BorderColor([out, retval]OLE_COLOR* pclr);
[propput, id(DISPID_BORDERSTYLE)]
HRESULT BorderStyle([in]long style);
[propget, id(DISPID_BORDERSTYLE)]
HRESULT BorderStyle([out, retval]long* pstyle);
[propput, id(DISPID_BORDERWIDTH)]
HRESULT BorderWidth([in]long width);
[propget, id(DISPID_BORDERWIDTH)]
HRESULT BorderWidth([out, retval]long* width);
[propput, id(DISPID_DRAWMODE)]
HRESULT DrawMode([in]long mode);
[propget, id(DISPID_DRAWMODE)]
HRESULT DrawMode([out, retval]long* pmode);
[propput, id(DISPID_DRAWSTYLE)]
HRESULT DrawStyle([in]long style);
[propget, id(DISPID_DRAWSTYLE)]
HRESULT DrawStyle([out, retval]long* pstyle);
[propput, id(DISPID_DRAWWIDTH)]
HRESULT DrawWidth([in]long width);
[propget, id(DISPID_DRAWWIDTH)]
HRESULT DrawWidth([out, retval]long* pwidth);
[propput, id(DISPID_FILLCOLOR)]
HRESULT FillColor([in]OLE_COLOR clr);
[propget, id(DISPID_FILLCOLOR)]
HRESULT FillColor([out, retval]OLE_COLOR* pclr);
[propput, id(DISPID_FILLSTYLE)]
HRESULT FillStyle([in]long style);
[propget, id(DISPID_FILLSTYLE)]
HRESULT FillStyle([out, retval]long* pstyle);
[propputref, id(DISPID_FONT)]
HRESULT Font([in]IFontDisp* pFont);
[propput, id(DISPID_FONT)]
HRESULT Font([in]IFontDisp* pFont);
[propget, id(DISPID_FONT)]
HRESULT Font([out, retval]IFontDisp** ppFont);
[propput, id(DISPID_FORECOLOR)]
HRESULT ForeColor([in]OLE_COLOR clr);
[propget, id(DISPID_FORECOLOR)]
HRESULT ForeColor([out,retval]OLE_COLOR* pclr);
[propput, id(DISPID_ENABLED)]
HRESULT Enabled([in]VARIANT_BOOL vbool);
[propget, id(DISPID_ENABLED)]
HRESULT Enabled([out,retval]VARIANT_BOOL* pbool);
[propget, id(DISPID_HWND)]
HRESULT Window([out, retval]LONG_PTR* phwnd); // was long* via the wizard, but doesn't compile Win64
[propput, id(DISPID_TABSTOP)]
HRESULT TabStop([in]VARIANT_BOOL vbool);
[propget, id(DISPID_TABSTOP)]
HRESULT TabStop([out, retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_TEXT)]
HRESULT Text([in]BSTR strText);
[propget, id(DISPID_TEXT)]
HRESULT Text([out, retval]BSTR* pstrText);
[propput, id(DISPID_CAPTION)]
HRESULT Caption([in]BSTR strCaption);
[propget, id(DISPID_CAPTION)]
HRESULT Caption([out,retval]BSTR* pstrCaption);
[propput, id(DISPID_BORDERVISIBLE)]
HRESULT BorderVisible([in]VARIANT_BOOL vbool);
[propget, id(DISPID_BORDERVISIBLE)]
HRESULT BorderVisible([out, retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_APPEARANCE)]
HRESULT Appearance([in]short appearance);
[propget, id(DISPID_APPEARANCE)]
HRESULT Appearance([out, retval]short* pappearance);
[propput, id(DISPID_MOUSEPOINTER)]
HRESULT MousePointer([in]long pointer);
[propget, id(DISPID_MOUSEPOINTER)]
HRESULT MousePointer([out, retval]long* ppointer);
[propputref, id(DISPID_MOUSEICON)]
HRESULT MouseIcon([in]IPictureDisp* pMouseIcon);
[propput, id(DISPID_MOUSEICON)]
HRESULT MouseIcon([in]IPictureDisp* pMouseIcon);
[propget, id(DISPID_MOUSEICON)]
HRESULT MouseIcon([out, retval]IPictureDisp** ppMouseIcon);
[propputref, id(DISPID_PICTURE)]
HRESULT Picture([in]IPictureDisp* pPicture);
[propput, id(DISPID_PICTURE)]
HRESULT Picture([in]IPictureDisp* pPicture);
[propget, id(DISPID_PICTURE)]
HRESULT Picture([out, retval]IPictureDisp** ppPicture);
[propput, id(DISPID_VALID)]
HRESULT Valid([in]VARIANT_BOOL vbool);
[propget, id(DISPID_VALID)]
HRESULT Valid([out, retval]VARIANT_BOOL* pbool);
};
// ---------------------------------------------------------------
[
uuid(11166000-DF8A-463a-B620-7BEC23542010),
version(1.0),
helpstring("Microsoft TV CA Type Library")
]
library MSTvCALib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
// ---------------------------------------------------
// CAUTION - if Change events below, need to perform:
// 1) compile the MIDL file to generate the typelib
// 2) In VCC class view, <xxx>->Implement Connection Point (_ICA<xxx>Events)
// to regenerate the CProxy_ICA<xxx>Events<> code.
// Need to browse to objd\i386 directory and select MSTvCA.tlb
// (The file MSTvCACP.h must be checked out.)
// Where <xxx> is Denials, Manager, Offers, Policies, Request, and Tolls
[
uuid(11166298-DF8A-463A-B620-7BEC23542010),
helpstring("_ICAResDenialTreeEvents Interface")
]
dispinterface _ICAResDenialTreeEvents
{
properties:
methods:
[id(1),helpstring("method PaidTollSelected")] HRESULT PaidTollSelected([in] ICAToll *pToll, [in] long fSelected);
};
[
uuid(11166200-DF8A-463A-B620-7BEC23542010),
helpstring("ICAManagerEvents Interface")
]
dispinterface _ICAManagerEvents
{
properties:
methods:
[id(2201),helpstring("method RequestActivated")] HRESULT RequestActivated([in] ICARequest *pReq);
[id(2202),helpstring("method RequestDeactivated")] HRESULT RequestDeactivated([in] ICARequest *pReq);
[id(2203),helpstring("method OfferAdded")] HRESULT OfferAdded([in] ICAOffer *pOffer,[in] long cOffers);
[id(2204),helpstring("method OfferRemoved")] HRESULT OfferRemoved([in] ICAOffer *pOffer,[in] long cOffers);
[id(2205),helpstring("method PolicyAdded")] HRESULT PolicyAdded([in] ICAPolicy *pPolicy,[in] long cPolicies);
[id(2206),helpstring("method PolicyRemoved")] HRESULT PolicyRemoved([in] ICAPolicy *pPolicy,[in] long cPolicies);
[id(2207),helpstring("method RequestDenialAdded")] HRESULT RequestDenialAdded([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[id(2208),helpstring("method RequestDenialRemoved")] HRESULT RequestDenialRemoved([in] ICARequest *pReq, [in] ICADenial *pDenial,[in] long cDenials);
[id(2209),helpstring("method DenialTollAdded")] HRESULT DenialTollAdded([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[id(2210),helpstring("method DenialTollRemoved")] HRESULT DenialTollRemoved([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[id(2211),helpstring("method TollDenialAdded")] HRESULT TollDenialAdded([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[id(2212),helpstring("method TollDenialRemoved")] HRESULT TollDenialRemoved([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[id(2213),helpstring("method OfferTollAdded")] HRESULT OfferTollAdded([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[id(2214),helpstring("method OfferTollRemoved")] HRESULT OfferTollRemoved([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[id(2215),helpstring("method TollStateChanged")] HRESULT TollStateChanged([in] ICAToll *pToll, [in] CATollState enState);
[id(2216),helpstring("method DenialStateChanged")] HRESULT DenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enState);
[id(2217),helpstring("method ComponentDenialAdded")] HRESULT ComponentDenialAdded([in] ICAComponent *pComp, [in] ICADenial *pDenial,[in] long cDenials);
[id(2218),helpstring("method ComponentDenialRemoved")] HRESULT ComponentDenialRemoved([in] ICAComponent *pComp, [in] ICADenial *pDenial,[in] long cDenials);
};
[
uuid(11166210-DF8A-463A-B620-7BEC23542010),
helpstring("ICARequestEvents Interface")
]
dispinterface _ICARequestEvents
{
properties:
methods:
[id(1), helpstring("method CheckStarted")] HRESULT CheckStarted([in] ICARequest *pRequest);
[id(2), helpstring("method CheckComplete")] HRESULT CheckComplete([in] ICARequest *pRequest,[in] long cDenials);
};
[
uuid(11166220-DF8A-463A-B620-7BEC23542010),
helpstring("_ICAPoliciesEvents Interface")
]
dispinterface _ICAPoliciesEvents
{
properties:
methods:
[id(1), helpstring("method ItemAdded")] HRESULT ItemAdded([in] ICAPolicy *pPolicy, long cPolicies);
[id(2), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] ICAPolicy *pPolicy, long cPolicies);
};
[
uuid(11166230-DF8A-463A-B620-7BEC23542010),
helpstring("ICATollsEvents Interface")
]
dispinterface _ICATollsEvents
{
properties:
methods:
[id(1), helpstring("method ItemAdded")] HRESULT ItemAdded([in] ICAToll *pToll, [in] long cTolls);
[id(2), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] ICAToll *pToll, [in] long cTolls);
[id(3), helpstring("method StateChanged")] HRESULT StateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
};
[
uuid(11166240-DF8A-463A-B620-7BEC23542010),
helpstring("ICADenialsEvents Interface")
]
dispinterface _ICADenialsEvents
{
properties:
methods:
[id(1), helpstring("method ItemAdded")] HRESULT ItemAdded([in] ICADenial *pDenial, [in] long cDenials);
[id(2), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] ICADenial *pDenial, [in] long cDenials);
[id(3), helpstring("method StateChanged")] HRESULT StateChanged([in] ICADenial *pDenial, [in] CADenialState enStateFrom);
};
[
uuid(11166250-DF8A-463A-B620-7BEC23542010),
helpstring("ICAOffersEvents Interface")
]
dispinterface _ICAOffersEvents
{
properties:
methods:
[id(1), helpstring("method ItemAdded")] HRESULT ItemAdded([in] ICAOffer *pOffer, [in] long cOffers);
[id(2), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] ICAOffer *pOffer, [in] long cOffers);
};
[
uuid(11166260-DF8A-463A-B620-7BEC23542010),
helpstring("_ICAComponentsEvents Interface")
]
dispinterface _ICAComponentsEvents
{
properties:
methods:
[id(1), helpstring("method ItemAdded")] HRESULT ItemAdded([in] ICAComponent *pComponent, [in] long cComponent);
[id(2), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] ICAComponent *pComponent, [in] long cComponent);
}; // --------------------------------
[
object,
dual,
uuid(11166300-DF8A-463a-B620-7BEC23542010),
helpstring("ICAManager Interface"),
pointer_default(unique)
]
interface ICAManager : IDispatch
{
[propget, id(1), helpstring("property Policies")] HRESULT Policies([out, retval] ICAPolicies **ppPolicies);
[propget, id(2), helpstring("property ActiveRequest")] HRESULT ActiveRequest([out, retval] ICARequest **ppRequest);
[propget, id(3), helpstring("property Offers")] HRESULT Offers([out, retval] ICAOffers **ppOffers);
[propget, id(4), helpstring("property PaidTolls")] HRESULT PaidTolls([out, retval] ICATolls **ppTolls);
[propput, id(5), helpstring("property UseDefaultUI")] HRESULT UseDefaultUI([in] long fUseDefaultUI);
[propget, id(5), helpstring("property UseDefaultUI")] HRESULT UseDefaultUI([out, retval] long *pfUseDefaultUI);
[propget, id(6), helpstring("property DenialsFor")] HRESULT DenialsFor([in] IUnknown *pUnk, [out, retval] ICADenials **ppDenials);
};
[
object,
uuid(11166310-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICARequest Interface"),
pointer_default(unique)
]
interface ICARequest : IDispatch
{
[propget, id(1), helpstring("property RequestedItem")] HRESULT RequestedItem([out, retval] IUnknown **ppTunereq);
[propget, id(2), helpstring("property CAManager")] HRESULT CAManager([out, retval] ICAManager **ppManager);
[propget, id(3), helpstring("property ScheduleEntry")] HRESULT ScheduleEntry([out, retval] IUnknown **ppUnkScheduleEntry); // IScheduleEntry?
[propget, id(4), helpstring("property Denials")] HRESULT Denials([out, retval] ICADenials **ppDenials);
[propget, id(5), helpstring("property Components")] HRESULT Components([out, retval] ICAComponents **pComponents);
[propget, id(6), helpstring("property Check")] HRESULT Check([out, retval] long *pcDenials);
[propget, id(7), helpstring("property ResolveDenials")] HRESULT ResolveDenials([out, retval] long *pcDenials);
[propget, id(8), helpstring("property CountDeniedComponents")] HRESULT CountDeniedComponents([out, retval] long *pcDeniedComponents);
};
[
object,
uuid(11166320-DF8A-463a-B620-7BEC23542010),
helpstring("ICAPolicy Interface"), // client written
pointer_default(unique)
]
interface ICAPolicy : IUnknown // -- not IDispatch, let the client side implement that interface
{
[propget, id(0), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pbstr);
[ id(1), helpstring("method CheckRequest")] HRESULT CheckRequest([in] ICARequest *pReq);
// [propget, id(2), helpstring("property CAManager")] HRESULT CAManager([out, retval] ICAManager **ppManager);
[propput, id(2), helpstring("property CAManager")] HRESULT CAManager([in] ICAManager *pManager);
[propget, id(3), helpstring("property OkToPersist")] HRESULT OkToPersist([out, retval] BOOL *pfOkToPersist);
[propget, id(4), helpstring("property OkToRemove")] HRESULT OkToRemove([out, retval] BOOL *pfOkToRemove);
[propget, id(5), helpstring("property OkToRemoveDenial")] HRESULT OkToRemoveDenial(ICADenial *pDenial, [out, retval] BOOL *pfOk);
[propget, id(6), helpstring("property OkToRemoveOffer")] HRESULT OkToRemoveOffer(ICAOffer *pOffer, [out, retval] BOOL *pfOk);
}
[
object,
uuid(11166330-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAToll Interface"), // also client written
pointer_default(unique)
]
interface ICAToll : IUnknown // -- also not IDispatch - client side implements that interface
{
// [propget, id(1), helpstring("property CAManager")] HRESULT CAManager([out, retval] ICAManager **ppManager);
[propput, id(1), helpstring("property CAManager")] HRESULT CAManager([in] ICAManager *pManager);
[ id(2), helpstring("method Select")] HRESULT Select([in] BOOL fSelect);
[ id(3), helpstring("method PayToll")] HRESULT PayToll();
[propget, id(4), helpstring("property Refundable")] HRESULT Refundable([out, retval] BOOL *pfRefundable);
[ id(5), helpstring("method RefundToll")] HRESULT RefundToll();
[propget, id(6), helpstring("property TolledObject")] HRESULT TolledObject([out, retval] IUnknown **ppUnkTolled);
[propget, id(7), helpstring("property Denials")] HRESULT Denials([out, retval] ICADenials **ppDenials);
[propget, id(8), helpstring("property Policy")] HRESULT Policy([out, retval] ICAPolicy **ppPolicy);
[propget, id(9), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstr);
[propget, id(10),helpstring("property TimePaid")] HRESULT TimePaid([out, retval] DATE *pdtPaid);
[propget, id(11),helpstring("property State")] HRESULT State([out, retval] CATollState *penState);
};
[
object,
uuid(11166340-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICADenial Interface"),
pointer_default(unique)
]
interface ICADenial : IDispatch
{
[propget, id(1), helpstring("property DeniedObject")] HRESULT DeniedObject([out, retval] IUnknown **ppUnkDenied);
[propget, id(2), helpstring("property Policy")] HRESULT Policy([out, retval] ICAPolicy **ppPolicy);
[propget, id(3), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstr);
[propput, id(3), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [in] BSTR bstr);
[propget, id(4), helpstring("property State")] HRESULT State([out, retval] CADenialState *penState);
[propput, id(4), helpstring("property State")] HRESULT State([in] CADenialState enState);
[propget, id(5), helpstring("property Tolls")] HRESULT Tolls([out, retval] ICATolls **ppTolls);
[ id(6), helpstring("method NotifyTollStateChanged")] HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
};
[
object,
uuid(11166350-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAOffer Interface"),
pointer_default(unique)
]
interface ICAOffer : IDispatch
{
[propget, id(1), helpstring("property CAManager")] HRESULT CAManager([out, retval] ICAManager **ppManager);
[propput, id(1), helpstring("property CAManager")] HRESULT CAManager([in] ICAManager *pManager);
[propget, id(2), helpstring("property Policy")] HRESULT Policy([out, retval] ICAPolicy **pppolicy);
[propget, id(3), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [out, retval] BSTR *pbstr);
[propput, id(3), helpstring("property Description")] HRESULT Description([in] CADescFormat enFormat, [in] BSTR bstr);
[propget, id(4), helpstring("property StartTime")] HRESULT StartTime([out, retval] DATE *pdtStart);
[propget, id(5), helpstring("property EndTime")] HRESULT EndTime([out, retval] DATE *pdtEnd);
[propget, id(6), helpstring("property Tolls")] HRESULT Tolls([out, retval] ICATolls **ppTolls);
[ id(7), helpstring("method NotifyTollStateChanged")] HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateFrom);
};
[
object,
uuid(11166360-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAComponent Interface"),
pointer_default(unique)
]
interface ICAComponent : IDispatch
{
[propget, id(1), helpstring("property Component")] HRESULT Component([out, retval] IComponent **ppComponent);
[propget, id(2), helpstring("property Denials")] HRESULT Denials([out, retval] ICADenials **ppDenials);
[propget, id(3), helpstring("property Request")] HRESULT Request([out, retval] ICARequest **ppComponent);
};
// --------------------------------
[
uuid(11166100-DF8A-463a-B620-7BEC23542010),
helpstring("CAManager Class")
]
coclass CAManager
{
[default] interface ICAManager;
interface ICAManagerInternal;
// interface ICAManagerXProxy; // this is the actual outgoing 'event' interface
[default, source] dispinterface _ICAManagerEvents;
};
[ // magic class used to avoid circular references through the CAManager.
hidden,
uuid(11166101-DF8A-463a-B620-7BEC23542010),
helpstring("CAManagerProxy Class")
]
coclass CAManagerProxy
{
[default] interface ICAManager;
interface ICAManagerInternal;
// [default, source] dispinterface _ICAManagerEvents; /// QUESTION ??? DO I want these just here, or in the true Manager, or both?
};
[
uuid(11166540-DF8A-463a-B620-7BEC23542010), // needed for user's tolls.
helpstring("CADenials Class")
]
coclass CADenials
{
[default] interface ICADenials;
interface ICADenialsInternal;
[default, source] dispinterface _ICADenialsEvents;
};
// TODO - mark this as hidden...
[
uuid(11166550-DF8A-463a-B620-7BEC23542010),
helpstring("CAOffer Class")
]
coclass CAOffer
{
[default] interface ICAOffer;
};
/* [
uuid(11166999-DF8A-463a-B620-7BEC23542010),
helpstring("CATempEvent_TempBuilder Class - used so we can build events the first time")
]
coclass CATempEvent_TempBuilder
{
[source] dispinterface _ICAResDenialTreeEvents;
[source] dispinterface _ICAManagerEvents;
[source] dispinterface _ICARequestEvents;
[source] dispinterface _ICATollsEvents;
[source] dispinterface _ICADenialsEvents;
[source] dispinterface _ICAPoliciesEvents;
[source] dispinterface _ICAOffersEvents;
[source] dispinterface _ICAComponentsEvents;
};
*/
// -----------------------------------
[
object,
uuid(11166898-DF8A-463a-B620-7BEC23542010),
dual,
helpstring("ICAResDenialTree Interface"),
pointer_default(unique)
]
interface ICAResDenialTree : IDispatch
{
[propget, id(1), helpstring("property CAManager")] HRESULT CAManager([out, retval] ICAManager **ppCAManager);
[propput, id(1), helpstring("property CAManager")] HRESULT CAManager([in] ICAManager *pCAManager);
[propget, id(2), helpstring("property DisplayFields")] HRESULT DisplayFields([out, retval] long *penFields); // fields to display in default ResDenial UI
[propput, id(2), helpstring("property DisplayFields")] HRESULT DisplayFields([in] long enFields); // fields to display in default ResDenial UI
[ id(3), helpstring("method UpdateView")] HRESULT UpdateView([in] IUnknown *pUnk); // if object is being viewed, updates it.
// ResDenial control listens to these incoming sink events sent by Manager ((_ICAManagerEvents).. ID's Must match
[ id(2201),helpstring("method NotifyRequestActivated")] HRESULT NotifyRequestActivated([in] ICARequest *preq);
[ id(2202),helpstring("method NotifyRequestDeactivated")] HRESULT NotifyRequestDeactivated([in] ICARequest *preq);
[ id(2203),helpstring("method NotifyOfferAdded")] HRESULT NotifyOfferAdded([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2204),helpstring("method NotifyOfferRemoved")] HRESULT NotifyOfferRemoved([in] ICAOffer *pOffer,[in] long cOffers);
[ id(2205),helpstring("method NotifyPolicyAdded")] HRESULT NotifyPolicyAdded([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2206),helpstring("method NotifyPolicyRemoved")] HRESULT NotifyPolicyRemoved([in] ICAPolicy *pPolicy,[in] long cPolicies);
[ id(2207),helpstring("method NotifyRequestDenialAdded")] HRESULT NotifyRequestDenialAdded([in] ICARequest *preq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2208),helpstring("method NotifyRequestDenialRemoved")] HRESULT NotifyRequestDenialRemoved([in] ICARequest *preq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2209),helpstring("method NotifyDenialTollAdded")] HRESULT NotifyDenialTollAdded([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2210),helpstring("method NotifyDenialTollRemoved")] HRESULT NotifyDenialTollRemoved([in] ICADenial *pDenial, [in] ICAToll *pToll, [in] long cTolls);
[ id(2211),helpstring("method NotifyTollDenialAdded")] HRESULT NotifyTollDenialAdded([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2212),helpstring("method NotifyTollDenialRemoved")] HRESULT NotifyTollDenialRemoved([in] ICAToll *pToll, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2213),helpstring("method NotifyOfferTollAdded")] HRESULT NotifyOfferTollAdded([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2214),helpstring("method NotifyOfferTollRemoved")] HRESULT NotifyOfferTollRemoved([in] ICAOffer *pOffer, [in] ICAToll *pToll, [in] long cTolls);
[ id(2215),helpstring("method NotifyTollStateChanged")] HRESULT NotifyTollStateChanged([in] ICAToll *pToll, [in] CATollState enStateLast);
[ id(2216),helpstring("method NotifyDenialStateChanged")] HRESULT NotifyDenialStateChanged([in] ICADenial *pDenial, [in] CADenialState enStateLast);
[ id(2217),helpstring("method NotifyComponentDenialAdded")] HRESULT NotifyComponentDenialAdded([in] ICAComponent *preq, [in] ICADenial *pDenial,[in] long cDenials);
[ id(2218),helpstring("method NotifyComponentDenialRemoved")] HRESULT NotifyComponentDenialRemoved([in] ICAComponent *preq, [in] ICADenial *pDenial,[in] long cDenials);
};
[
uuid(11166998-DF8A-463a-B620-7BEC23542010),
helpstring("CA Default RequestDenial Control")
]
coclass CAResDenialTree
{
[default] interface ICAResDenialTree;
[default, source] dispinterface _ICAResDenialTreeEvents;
};
// -----------------------------
[
uuid(11166991-DF8A-463a-B620-7BEC23542010),
helpstring("_ICADefaultDlgEvents Interface")
]
dispinterface _ICADefaultDlgEvents
{
properties:
methods:
};
[
uuid(11166990-DF8A-463a-B620-7BEC23542010),
helpstring("CADefaultDlg Class")
]
coclass CADefaultDlg
{
[default] interface ICADefaultDlg;
[default, source] dispinterface _ICADefaultDlgEvents;
};
// -------------------------------------
// Magic way to define the SID_ ...
cpp_quote("#define SID_CAManager CLSID_CAManager")
};

View File

@ -0,0 +1,837 @@
// GuideStore.idl : IDL source for GuideStore.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (GuideStore.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
interface IObjects;
interface IMetaProperties;
interface IMetaProperty;
interface IMetaPropertyCondition;
interface IMetaPropertySet;
interface IMetaPropertySets;
interface IMetaPropertyType;
interface IMetaPropertyTypes;
interface IGuideStore;
interface IService;
interface IServices;
interface IProgram;
interface IPrograms;
interface IScheduleEntry;
interface IScheduleEntries;
interface IChannel;
interface IChannels;
interface IChannelLineup;
interface IChannelLineups;
interface IGuideDataProvider;
interface IGuideDataProviders;
#define didAdd 10
#define didAddAt 15
#define didAddNew 20
#define didAddNewAt 25
#define didAnd 30
#define didBeginTrans 35
#define didChannelLineups 40
#define didChannels 50
#define didCommitTrans 55
#define didCond 60
#define didCopyrightDate 70
#define didCount 80
#define didDataEndTime 90
#define didDefaultValue 100
#define didDescription 110
#define didEndTime 120
#define didGuideDataProvider 135
#define didGuideDataProviders 136
#define didID 150
#define didIdOf 155
#define didIID 170
#define didIsAnyDataAvailable 180
#define didInit 190
#if 0
#define didItem DISPID_VALUE
#else
#define didItem 191
#endif
#define didItemAdded 195
#define didItemChanged 196
#define didItemRemoved 197
#define didItemsByKey 198
#define didItemsChanged 199
#define didItemsInTimeRange 200
#define didItemsWithCond 210
#define didItemWithKey 215
#define didItemsWithMetaProp 220
#define didItemsWithMetaPropType 230
#define didItemsWithService 240
#define didItemsWithType 400
#define didItemWithID 250
#define didItemWithIID 260
#define didItemWithName 270
#define didItemWithMetaPropTypeLang 280
#define didItemWithTypeProviderLang 285
#define didItemWithProviderName 290
#define didItemWithServiceAtTime 300
#define didLanguage 310
#define didLength 320
#define didLookup 325
#define didMax 330
#define didMin 340
#define didName 350
#define didNew 360
#define didNewCollection 370
#define didNot 380
#define didObjects 390
#define didObjectTypes 410
#define didOpen 420
#define didOr 430
#define didProgram 440
#define didPrograms 450
#define didRollbackTrans 455
#define didMetaProperties 460
#define didMetaPropertiesOf 465
#define didMetaPropertySet 470
#define didMetaPropertySets 480
#define didMetaPropertyType 490
#define didMetaPropertyTypes 500
#define didProviderDescription 510
#define didProviderName 520
#define didProviderNetworkName 530
#define didResync 535
#define didItemInvRelBy 540
#define didItemsInvRelBy 545
#define didItemsInvRelToBy 546
#define didItemRelBy 550
#define didItemsRelBy 555
#define didItemsRelToBy 556
#define didRemove 560
#define didRemoveAll 565
#define didSchedEntries 570
#define didService 580
#define didServices 590
#define didStartTime 600
#define didTitle 620
#define didType 630
#define didTuneRequest 640
#define didUnreferencedItems 650
#if 0
#define didValue DISPID_VALUE
#else
#define didValue 660
#endif
[
uuid(8D9EEDCE-21E9-4845-82A8-99CEC53E6DB2),
version(1.0),
helpstring("Microsoft TV GuideStore 1.0 Type Library")
]
library MSTVGS
{
importlib("stdole2.tlb");
[
object,
uuid(F71020D2-A467-4EB7-839A-63C8F40C7AB4),
dual,
helpstring("IMetaPropertySet Interface"),
pointer_default(unique)
]
interface IMetaPropertySet : IDispatch
{
[propget, id(didName), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
[propget, id(didMetaPropertyTypes), helpstring("property MetaPropertyTypes")] HRESULT MetaPropertyTypes([out, retval] IMetaPropertyTypes* *pVal);
};
[
object,
uuid(E8FD768C-EC4E-4DAB-A09C-011E8ECAE4D2),
dual,
helpstring("IMetaPropertySets Interface"),
pointer_default(unique),
nonextensible
]
interface IMetaPropertySets : IDispatch
{
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT index, [out, retval] IMetaPropertySet* *ppropset);
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItemWithName), helpstring("property ItemWithName")] HRESULT ItemWithName(BSTR bstrName, [out, retval] IMetaPropertySet* *ppropset);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(BSTR bstrName, [out, retval] IMetaPropertySet **pppropset);
[propget, id(didLookup), helpstring("property Lookup")] HRESULT Lookup([in] BSTR bstr, [out, retval] IMetaPropertyType * *ppproptype);
};
[
object,
uuid(86502400-213B-4ADF-A1E2-76365E7172BD),
dual,
helpstring("IMetaPropertyType Interface"),
pointer_default(unique)
]
interface IMetaPropertyType : IDispatch
{
[propget, id(didMetaPropertySet), helpstring("property MetaPropertySet")] HRESULT MetaPropertySet([out, retval] IMetaPropertySet* *ppropset);
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didName), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
[propget, id(didNew), helpstring("property New")] HRESULT New(long lang, VARIANT val, [out, retval] IMetaProperty* *pprop);
[propget, id(didCond), helpstring("property Cond")] HRESULT Cond(BSTR bstrCond, long lang, VARIANT varValue, [out, retval] IMetaPropertyCondition* *ppropcond);
};
[
object,
uuid(9BF4984A-4CFE-4588-9FCF-828C74EF7104),
dual,
helpstring("IMetaPropertyTypes Interface"),
pointer_default(unique)
]
interface IMetaPropertyTypes : IDispatch
{
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT index, [out, retval] IMetaPropertyType* *pproptype);
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItemWithID), helpstring("property ItemWithID")] HRESULT ItemWithID(long id, [out, retval] IMetaPropertyType* *pproptype);
[propget, id(didItemWithName), helpstring("property ItemWithName")] HRESULT ItemWithName(BSTR bstrName, [out, retval] IMetaPropertyType* *pproptype);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(long id, BSTR bstrName, [out, retval] IMetaPropertyType * *pVal);
[propget, id(didMetaPropertySet), helpstring("property MetaPropertySet")] HRESULT MetaPropertySet([out, retval] IMetaPropertySet * *pVal);
};
[
object,
uuid(A4BBD2C0-D7E4-4FC2-8FB0-176DDBCB3D72),
dual,
helpstring("IMetaProperty Interface"),
pointer_default(unique)
]
interface IMetaProperty : IDispatch
{
[propget, id(didMetaPropertyType), helpstring("property MetaPropertyType")] HRESULT MetaPropertyType([out, retval] IMetaPropertyType* *pproptype);
[propget, id(didLanguage), helpstring("property Language")] HRESULT Language([out, retval] long *pVal);
[propget, id(didGuideDataProvider), helpstring("property GuideDataProvider")] HRESULT GuideDataProvider([out, retval] IGuideDataProvider **ppprovider);
[propget, id(didValue), helpstring("property Value")] HRESULT Value([out, retval] VARIANT *pvarValue);
[propput, id(didValue), helpstring("property Value")] HRESULT Value([in] VARIANT varValue);
[propputref, id(didValue), helpstring("property Value")] HRESULT Value([in] IUnknown *punk);
[propget, id(didCond), helpstring("property Cond")] HRESULT Cond(BSTR bstrCond, [out, retval] IMetaPropertyCondition* *ppropcond);
};
[
object,
uuid(E7F78F69-8326-48A0-8E54-BBDCEE43BA70),
dual,
helpstring("IMetaProperties Interface"),
pointer_default(unique)
]
interface IMetaProperties : IDispatch
{
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT index, [out, retval] IMetaProperty* *pprop);
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItemWithMetaPropTypeLang), helpstring("property ItemWith")] HRESULT ItemWith(IMetaPropertyType *ptype, long lang, [out, retval] IMetaProperty* *pprop);
[propget, id(didItemWithTypeProviderLang), helpstring("property ItemWithTypeProviderLang")] HRESULT ItemWithTypeProviderLang(IMetaPropertyType *ptype, IGuideDataProvider *pprovider, long lang, [out, retval] IMetaProperty* *pprop);
[propget, id(didItemsWithMetaPropType), helpstring("property ItemsWithMetaPropertyType")] HRESULT ItemsWithMetaPropertyType(IMetaPropertyType *ptype, [out, retval] IMetaProperties* *pprops);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(IMetaPropertyType *pproptype, long lang, VARIANT varValue, [out, retval] IMetaProperty * *pVal);
[id(didAdd), helpstring("method Add")] HRESULT Add(IMetaProperty *pprop);
};
[
object,
uuid(98FAAEF5-397A-4372-93A3-FB3DA49B3EF1),
dual,
helpstring("IMetaPropertyCondition Interface"),
pointer_default(unique)
]
interface IMetaPropertyCondition : IDispatch
{
[propget, id(didAnd), helpstring("property And")] HRESULT And(IMetaPropertyCondition *pcond2, [out, retval] IMetaPropertyCondition* *ppropcond);
[propget, id(didOr), helpstring("property Or")] HRESULT Or(IMetaPropertyCondition *pcond2, [out, retval] IMetaPropertyCondition* *ppropcond);
};
[
object,
uuid(E4A9F7DA-F38F-43D3-AB3B-7E9F9FB7A7C7),
dual,
helpstring("IGuideStore Interface"),
pointer_default(unique)
]
interface IGuideStore : IDispatch
{
[propget, id(didIID), helpstring("property UUID")] HRESULT UUID([out, retval] BSTR *bstrUUID);
[propget, id(didServices), helpstring("property Services")] HRESULT Services([out, retval] IServices * *pVal);
[propget, id(didPrograms), helpstring("property Programs")] HRESULT Programs([out, retval] IPrograms * *pVal);
[propget, id(didSchedEntries), helpstring("property ScheduleEntries")] HRESULT ScheduleEntries([out, retval] IScheduleEntries * *pVal);
[propget, id(didGuideDataProviders), helpstring("property GuideDataProviders")] HRESULT GuideDataProviders([out, retval] IGuideDataProviders * *ppdataproviders);
[propget, id(didMetaPropertySets), helpstring("property MetaPropertySets")] HRESULT MetaPropertySets([out, retval] IMetaPropertySets **pppropsets);
[id(didOpen), helpstring("method Open")] HRESULT Open(BSTR bstrName);
[propget, id(didObjects), helpstring("property Objects")] HRESULT Objects([out, retval] IObjects * *ppobjs);
[propget, id(didChannels), helpstring("property Channels")] HRESULT Channels([out, retval] IChannels * *pVal);
[propget, id(didChannelLineups), helpstring("property ChannelLineups")] HRESULT ChannelLineups([out, retval] IChannelLineups * *pVal);
[propget, id(didGuideDataProvider), helpstring("property ActiveGuideDataProvider")] HRESULT ActiveGuideDataProvider([out, retval] IGuideDataProvider * *pVal);
[propputref, id(didGuideDataProvider), helpstring("property ActiveGuideDataProvider")] HRESULT ActiveGuideDataProvider([in] IGuideDataProvider * newVal);
[propget, id(didIdOf), helpstring("property IdOf")] HRESULT IdOf([in] IUnknown *punk, [out, retval] long *pVal);
[propget, id(didMetaPropertiesOf), helpstring("property MetaPropertiesOf")] HRESULT MetaPropertiesOf([in] IUnknown *punk, [out, retval] IMetaProperties **ppprops);
[id(didBeginTrans), helpstring("method BeginTrans")] HRESULT BeginTrans();
[id(didCommitTrans), helpstring("method CommitTrans")] HRESULT CommitTrans();
[id(didRollbackTrans), helpstring("method RollbackTrans")] HRESULT RollbackTrans();
};
[
uuid(E7267FA2-7EC0-4577-BE37-0BBF11028A56),
helpstring("MetaPropertySet Class")
]
coclass MetaPropertySet
{
[default] interface IMetaPropertySet;
};
[
uuid(027D8BB9-B860-4B96-B498-7EA609F33250),
helpstring("MetaPropertySets Class")
]
coclass MetaPropertySets
{
[default] interface IMetaPropertySets;
};
[
uuid(A09139F3-47ED-4492-A45E-F7F11B121F4F),
helpstring("MetaPropertyType Class")
]
coclass MetaPropertyType
{
[default] interface IMetaPropertyType;
};
[
uuid(5F24A17F-1DDE-4F37-8B29-489229175C73),
helpstring("MetaPropertyTypes Class")
]
coclass MetaPropertyTypes
{
[default] interface IMetaPropertyTypes;
};
[
uuid(A42A1FF3-BC43-4714-8B94-06103474372B),
helpstring("MetaProperty Class")
]
coclass MetaProperty
{
[default] interface IMetaProperty;
};
[
uuid(78B8FA05-01B2-4B0A-B6E0-59FC6C0E7A5E),
helpstring("MetaProperties Class")
]
coclass MetaProperties
{
[default] interface IMetaProperties;
};
[
uuid(3B575572-EC9F-447D-9554-17C6E92E8328),
helpstring("MetaPropertyCondition Class")
]
coclass MetaPropertyCondition
{
[default] interface IMetaPropertyCondition;
};
[
object,
uuid(59745450-F0F4-4B3F-B49E-55664E425CF6),
dual,
helpstring("IService Interface"),
pointer_default(unique)
]
interface IService : IDispatch
{
[propget, id(didTuneRequest), helpstring("property TuneRequest")] HRESULT TuneRequest([out, retval] IUnknown * *ppunk);
[propputref, id(didTuneRequest), helpstring("property TuneRequest")] HRESULT TuneRequest([in] IUnknown *punk);
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didStartTime), helpstring("property StartTime")] HRESULT StartTime([out, retval] DATE *pdt);
[propput, id(didStartTime), helpstring("property StartTime")] HRESULT StartTime([in] DATE dt);
[propget, id(didEndTime), helpstring("property EndTime")] HRESULT EndTime([out, retval] DATE *pdt);
[propput, id(didEndTime), helpstring("property EndTime")] HRESULT EndTime([in] DATE dt);
[propget, id(didProviderName), helpstring("property ProviderName")] HRESULT ProviderName([out, retval] BSTR *pbstrName);
[propput, id(didProviderName), helpstring("property ProviderName")] HRESULT ProviderName([in] BSTR bstrName);
[propget, id(didProviderNetworkName), helpstring("property ProviderNetworkName")] HRESULT ProviderNetworkName([out, retval] BSTR *pbstrName);
[propput, id(didProviderNetworkName), helpstring("property ProviderNetworkName")] HRESULT ProviderNetworkName([in] BSTR bstrName);
[propget, id(didProviderDescription), helpstring("property ProviderDescription")] HRESULT ProviderDescription([out, retval] BSTR *pbstrDesc);
[propput, id(didProviderDescription), helpstring("property ProviderDescription")] HRESULT ProviderDescription([in] BSTR bstrDescr);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
[propget, id(didSchedEntries), helpstring("property ScheduleEntries")] HRESULT ScheduleEntries([out, retval] IScheduleEntries * *pVal);
};
[
object,
uuid(D3517044-B747-42C0-AFD5-31265ABA4977),
dual,
helpstring("IServices Interface"),
pointer_default(unique)
]
interface IServices : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IService * *pVal);
[propget, id(didChannelLineups), helpstring("property ChannelLineups")] HRESULT ChannelLineups([out, retval] IChannelLineups * *pVal);
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT varIndex);
[propget, id(didItemWithID), helpstring("property ItemWithID")] HRESULT ItemWithID(long id, [out, retval] IService * *pVal);
[propget, id(didItemWithProviderName), helpstring("property ItemWithProviderName")] HRESULT ItemWithProviderName(BSTR bstrProviderName, [out, retval] IService * *pVal);
[propget, id(didItemsWithMetaProp), helpstring("property ItemsWithMetaProperty")] HRESULT ItemsWithMetaProperty(IMetaProperty *pprop, [out, retval] IServices * *ppservices);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *pcond, [out, retval] IServices * *ppservices);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(IUnknown *punkTuneRequest, BSTR bstrProviderName, BSTR bstrProviderDescription, BSTR bstrProviderNetworkName, DATE dtStart, DATE dtEnd, [out, retval] IService * *pVal);
[propget, id(didItemsInTimeRange), helpstring("property ItemsInTimeRange")] HRESULT ItemsInTimeRange(DATE dtStart, DATE dtEnd, [out, retval] IServices * *pVal);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[id(didUnreferencedItems), helpstring("method UnreferencedItems")] HRESULT UnreferencedItems([out, retval] IServices **ppservices);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IServices * *ppservices);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IService * *ppservice);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(C4001F96-2DEE-4C33-B807-F829889A8CCD),
helpstring("GuideStore Class")
]
coclass GuideStore
{
[default] interface IGuideStore;
};
[
uuid(957D8D57-32B1-4BE3-8E37-EC8849F16815),
helpstring("Service Class")
]
coclass Service
{
[default] interface IService;
};
[
uuid(CCFB9EC5-E28E-4DE1-BD07-1C79303DE0A0),
helpstring("IServicesEvents Interface")
]
dispinterface IServicesEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IService *pservice);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IService *pservice);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
object,
uuid(FC91783E-5703-4319-A5B1-19555059559C),
dual,
helpstring("IProgram Interface"),
pointer_default(unique)
]
interface IProgram : IDispatch
{
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
[propget, id(didSchedEntries), helpstring("property ScheduleEntries")] HRESULT ScheduleEntries([out, retval] IScheduleEntries * *pVal);
[propget, id(didTitle), helpstring("property Title")] HRESULT Title([out, retval] BSTR *pVal);
[propput, id(didTitle), helpstring("property Title")] HRESULT Title([in] BSTR newVal);
[propget, id(didDescription), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pVal);
[propput, id(didDescription), helpstring("property Description")] HRESULT Description([in] BSTR newVal);
[propget, id(didCopyrightDate), helpstring("property CopyrightDate")] HRESULT CopyrightDate([out, retval] DATE *pVal);
[propput, id(didCopyrightDate), helpstring("property CopyrightDate")] HRESULT CopyrightDate([in] DATE newVal);
};
[
object,
uuid(8786250A-8EF8-4A51-B80A-643CCF835DB6),
dual,
helpstring("IPrograms Interface"),
pointer_default(unique)
]
interface IPrograms : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IProgram * *pVal);
[propget, id(didItemWithID), helpstring("property ItemWithID")] HRESULT ItemWithID(long id, [out, retval] IProgram * *pVal);
[propget, id(didItemsWithMetaProp), helpstring("property ItemsWithMetaProperty")] HRESULT ItemsWithMetaProperty(IMetaProperty *pprop, [out, retval] IPrograms * *pVal);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *pcond, [out, retval] IPrograms * *pVal);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew([out, retval] IProgram * *ppprog);
[id(didUnreferencedItems), helpstring("method UnreferencedItems")] HRESULT UnreferencedItems([out, retval] IPrograms **ppprogs);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT varIndex);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IPrograms * *ppprogs);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IProgram * *ppprog);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(43F457D2-C955-48E2-91AD-B91C9154C613),
helpstring("Services Class")
]
coclass Services
{
[default] interface IServices;
[default, source] dispinterface IServicesEvents;
};
[
uuid(C51F670A-7D1A-494E-931D-886BFDB2B438),
helpstring("Program Class")
]
coclass Program
{
[default] interface IProgram;
};
[
uuid(9AB9E463-1EC4-4D6B-AC80-5238561918EE),
helpstring("IProgramsEvents Interface")
]
dispinterface IProgramsEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IProgram *pprog);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IProgram *pprog);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
object,
uuid(6C46F789-2156-4AF0-97D7-38D99E2C9160),
dual,
helpstring("IScheduleEntry Interface"),
pointer_default(unique)
]
interface IScheduleEntry : IDispatch
{
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didService), helpstring("property Service")] HRESULT Service([out, retval] IService * *ppservice);
[propputref, id(didService), helpstring("property Service")] HRESULT Service([in] IService * pservice);
[propget, id(didProgram), helpstring("property Program")] HRESULT Program([out, retval] IProgram * *ppprog);
[propputref, id(didProgram), helpstring("property Program")] HRESULT Program([in] IProgram * pprog);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
[propget, id(didStartTime), helpstring("property StartTime")] HRESULT StartTime([out, retval] DATE *pdt);
[propput, id(didStartTime), helpstring("property StartTime")] HRESULT StartTime([in] DATE dt);
[propget, id(didEndTime), helpstring("property EndTime")] HRESULT EndTime([out, retval] DATE *pdt);
[propput, id(didEndTime), helpstring("property EndTime")] HRESULT EndTime([in] DATE dt);
[propget, id(didLength), helpstring("property Length")] HRESULT Length([out, retval] long *pVal);
};
[
object,
uuid(E5FDD9C4-8E60-4BEB-BBC8-93BE39C75BAA),
dual,
helpstring("IScheduleEntries Interface"),
pointer_default(unique)
]
interface IScheduleEntries : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IScheduleEntry * *pVal);
[propget, id(didItemWithServiceAtTime), helpstring("property ItemWithServiceAtTime")] HRESULT ItemWithServiceAtTime(IService *pservice, DATE dt, [out, retval] IScheduleEntry * *pVal);
[propget, id(didItemsWithService), helpstring("property ItemsWithService")] HRESULT ItemsWithService(IService *pservice, [out, retval] IScheduleEntries **ppschedentries);
[propget, id(didItemsWithMetaProp), helpstring("property ItemsWithMetaProperty")] HRESULT ItemsWithMetaProperty(IMetaProperty *pprop, [out, retval] IScheduleEntries * *pVal);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *pcond, [out, retval] IScheduleEntries * *pVal);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(DATE dtStart, DATE dtEnd, IService *pservice, IProgram *pprog, [out, retval] IScheduleEntry * *pVal);
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT varIndex);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[propget, id(didItemsInTimeRange), helpstring("property ItemsInTimeRange")] HRESULT ItemsInTimeRange(DATE dtStart, DATE dtEnd, [out, retval] IScheduleEntries * *pVal);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IScheduleEntries * *ppschedentries);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IScheduleEntry * *ppschedentry);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(16C9C579-B3F4-4C94-88EC-A65EA0B839E7),
helpstring("Programs Class")
]
coclass Programs
{
[default] interface IPrograms;
[default, source] dispinterface IProgramsEvents;
};
[
uuid(AFEBCA90-0FF9-48BD-BC98-95477A631BBB),
helpstring("ScheduleEntry Class")
]
coclass ScheduleEntry
{
[default] interface IScheduleEntry;
};
[
uuid(32692A48-F4B5-4826-BE88-E7F8ED9E65DC),
helpstring("IScheduleEntriesEvents Interface")
]
dispinterface IScheduleEntriesEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IScheduleEntry *pschedentry);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IScheduleEntry *pschedentry);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
object,
uuid(ED7DF8CD-4861-4389-8149-8EDE63A51F38),
dual,
helpstring("IChannel Interface"),
pointer_default(unique)
]
interface IChannel : IDispatch
{
[propget, id(didName), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
[propput, id(didName), helpstring("property Name")] HRESULT Name([in] BSTR newVal);
[propget, id(didService), helpstring("property Service")] HRESULT Service([out, retval] IService * *ppservice);
[propputref, id(didService), helpstring("property Service")] HRESULT Service([in] IService *pservice);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
[propget, id(didChannelLineups), helpstring("property ChannelLineups")] HRESULT ChannelLineups([out, retval] IChannelLineups * *pVal);
};
[
uuid(226D6AD0-7026-494F-BCAD-FAB087E67290),
helpstring("ScheduleEntries Class")
]
coclass ScheduleEntries
{
[default] interface IScheduleEntries;
[default, source] dispinterface IScheduleEntriesEvents;
};
[
object,
uuid(3BAE53BD-70F0-4C7B-8C9E-E0317FFF8D79),
dual,
helpstring("IChannels Interface"),
pointer_default(unique)
]
interface IChannels : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IChannel * *pVal);
[id(didAddAt), helpstring("method AddAt")] HRESULT AddAt(IChannel *pchan, long index);
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT index);
[propget, id(didAddNewAt), helpstring("property AddNewAt")] HRESULT AddNewAt(IService *pservice, BSTR bstrName, long index, [out, retval] IChannel * *pVal);
[propget, id(didItemWithName), helpstring("property ItemWithName")] HRESULT ItemWithName(BSTR bstrName, [out, retval] IChannel **ppchan);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *pcond, [out, retval] IChannels * *ppchannels);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[id(didUnreferencedItems), helpstring("method UnreferencedItems")] HRESULT UnreferencedItems([out, retval] IChannels **ppchans);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IChannels * *ppchans);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IChannel * *ppchan);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(83568B75-1FCC-4853-957A-9CF617B350A3),
helpstring("Channel Class")
]
coclass Channel
{
[default] interface IChannel;
};
[
uuid(6E945C62-0AB7-4D89-BB9E-212502FC7C88),
helpstring("IChannelsEvents Interface")
]
dispinterface IChannelsEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IChannel *pchan);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IChannel *pchan);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
object,
uuid(AB3FF8DB-C718-4ABD-98DE-E14DC74F4872),
dual,
helpstring("IChannelLineup Interface"),
pointer_default(unique)
]
interface IChannelLineup : IDispatch
{
[propget, id(didName), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pVal);
[propput, id(didName), helpstring("property Name")] HRESULT Name([in] BSTR newVal);
[propget, id(didChannels), helpstring("property Channels")] HRESULT Channels([out, retval] IChannels * *pVal);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
};
[
uuid(73AF9077-4F6D-4FCB-A9E2-FDFBB9AE5310),
helpstring("Channels Class")
]
coclass Channels
{
[default] interface IChannels;
[default, source] dispinterface IChannelsEvents;
};
[
object,
uuid(2F78C3E1-98FE-4526-A0A7-A621025AEFF6),
dual,
helpstring("IChannelLineups Interface"),
pointer_default(unique)
]
interface IChannelLineups : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IChannelLineup **ppchanlineup);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew(BSTR bstrName, [out, retval] IChannelLineup * *pVal);
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT varIndex);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[id(didUnreferencedItems), helpstring("method UnreferencedItems")] HRESULT UnreferencedItems([out, retval] IChannelLineups **ppchanlineups);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IChannelLineups * *ppchanlineups);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IChannelLineup * *ppchanlineup);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(8F86A876-E12A-4159-9647-EAFE0288014F),
helpstring("ChannelLineup Class")
]
coclass ChannelLineup
{
[default] interface IChannelLineup;
};
[
uuid(1E3971E3-CCDC-445D-AE97-A15D5D4A40C9),
helpstring("IChannelLineupsEvents Interface")
]
dispinterface IChannelLineupsEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IChannelLineup *pchanlineup);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IChannelLineup *pchanlineup);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
object,
uuid(A476A330-1123-4065-B3B7-D1EA899151BD),
helpstring("IObject Interface"),
pointer_default(unique)
]
interface IObject : IUnknown
{
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
[propget, id(didItemRelBy), helpstring("property ItemRelatedBy")] HRESULT ItemRelatedBy([in] IMetaPropertyType *pproptype, [out, retval] IUnknown **ppobj);
[propputref, id(didItemRelBy), helpstring("property ItemRelatedBy")] HRESULT ItemRelatedBy([in] IMetaPropertyType *pproptype, [in] IUnknown *pobj);
[propget, id(didMetaPropertyType), helpstring("property MetaPropertyType")] HRESULT MetaPropertyType([in] BSTR bstr, [out, retval] IMetaPropertyType* *pproptype);
[propget, id(didItemsWithType), helpstring("property ObjectsWithType")] HRESULT ObjectsWithType([in] BSTR bstrCLSID, [out, retval] IObjects **ppobjs);
};
[
object,
uuid(E8F1FBD5-4E44-4C26-B3D2-2C1C6999D611),
helpstring("IObjects Interface"),
pointer_default(unique)
]
interface IObjects : IUnknown
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IUnknown * *ppunk);
[propget, id(didItemsWithType), helpstring("property ItemsWithType")] HRESULT ItemsWithType(BSTR bstrCLSID, [out, retval] IObjects * *pVal);
[propget, id(didItemWithIID), helpstring("property ItemWithID")] HRESULT ItemWithID(long id, [out, retval] IUnknown * *ppunk);
[propget, id(didItemsWithMetaProp), helpstring("property ItemsWithMetaProperty")] HRESULT ItemsWithMetaProperty(IMetaProperty *pprop, [out, retval] IObjects * *pVal);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *ppropcond, [out, retval] IObjects * *pVal);
[id(didAddAt), helpstring("method AddAt")] HRESULT AddAt(IUnknown *punk, long index);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew([out, retval] IUnknown * *ppunk);
[id(didRemove), helpstring("method Remove")] HRESULT Remove(VARIANT varIndex);
[id(didRemoveAll), helpstring("method RemoveAll")] HRESULT RemoveAll();
[propget, id(didAddNewAt), helpstring("property AddNewAt")] HRESULT AddNewAt([in] long index, [out, retval] IUnknown * *ppunk);
[propget, id(didItemsInTimeRange), helpstring("property ItemsInTimeRange")] HRESULT ItemsInTimeRange(DATE dtStart, DATE dtEnd, [out, retval] IObjects * *pVal);
[propget, id(didItemsRelToBy), helpstring("property ItemsRelatedToBy")] HRESULT ItemsRelatedToBy([in] IUnknown *pobj, [in] IMetaPropertyType *pproptype, [out, retval] IObjects * *ppobjs);
[propget, id(didItemsInvRelToBy), helpstring("property ItemsInverseRelatedToBy")] HRESULT ItemsInverseRelatedToBy([in] IUnknown *pobj, [in] IMetaPropertyType *pproptype, [out, retval] IObjects * *ppobjs);
[id(didUnreferencedItems), helpstring("method UnreferencedItems")] HRESULT UnreferencedItems([out, retval] IObjects **ppobjs);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IObjects * *pVal);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IUnknown * *ppunk);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(8520EF80-1C19-4CB0-83FA-67DB59CC9AE4),
helpstring("ChannelLineups Class")
]
coclass ChannelLineups
{
[default] interface IChannelLineups;
[default, source] dispinterface IChannelLineupsEvents;
};
[
uuid(83375A19-A098-42CF-9206-EE36FE48C637),
helpstring("IObjectsNotifications Interface")
]
interface IObjectsNotifications : IUnknown
{
[id(didItemAdded), helpstring("method Notify_ItemAdded")] HRESULT Notify_ItemAdded(IUnknown *punk);
[id(didItemRemoved), helpstring("method Notify_ItemRemoved")] HRESULT Notify_ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method Notify_ItemChanged")] HRESULT Notify_ItemChanged(IUnknown *punk);
[id(didItemsChanged), helpstring("method Notify_ItemsChanged")] HRESULT Notify_ItemsChanged();
};
[
uuid(B485447D-B180-420F-B2A5-E7BBCEA07EAD),
aggregatable,
helpstring("Objects Class")
]
coclass Objects
{
[default] interface IObjects;
};
[
object,
uuid(4B16049B-E548-4868-B303-D501340E2CB1),
dual,
helpstring("IGuideDataProvider Interface"),
pointer_default(unique)
]
interface IGuideDataProvider : IDispatch
{
[propget, id(didID), helpstring("property ID")] HRESULT ID([out, retval] long *pVal);
[propget, id(didName), helpstring("property Name")] HRESULT Name([out, retval] BSTR *pbstrName);
[propget, id(didDescription), helpstring("property Description")] HRESULT Description([out, retval] BSTR *pbstrDesc);
[propput, id(didDescription), helpstring("property Description")] HRESULT Description([in] BSTR bstrDesc);
[propget, id(didMetaProperties), helpstring("property MetaProperties")] HRESULT MetaProperties([out, retval] IMetaProperties * *pVal);
};
[
object,
uuid(CA9DE996-637C-47BF-BC10-CF956BE298EC),
dual,
helpstring("IGuideDataProviders Interface"),
pointer_default(unique)
]
interface IGuideDataProviders : IDispatch
{
[propget, id(didCount), helpstring("property Count")] HRESULT Count([out, retval] long *plCount);
[propget, id(didItem), helpstring("property Item")] HRESULT Item(VARIANT varIndex, [out, retval] IGuideDataProvider * *ppdataprovider);
[propget, id(didItemWithID), helpstring("property ItemWithID")] HRESULT ItemWithID(long id, [out, retval] IGuideDataProvider * *ppdataprovider);
[propget, id(didItemWithName), helpstring("property ItemWithName")] HRESULT ItemWithName(BSTR bstrName, [out, retval] IGuideDataProvider **ppdataprovider);
[propget, id(didItemsWithMetaProp), helpstring("property ItemsWithMetaProperty")] HRESULT ItemsWithMetaProperty(IMetaProperty *pprop, [out, retval] IGuideDataProviders * *ppdataproviders);
[propget, id(didItemsWithCond), helpstring("property ItemsWithMetaPropertyCond")] HRESULT ItemsWithMetaPropertyCond(IMetaPropertyCondition *pcond, [out, retval] IGuideDataProviders * *ppdataproviders);
[propget, id(didAddNew), helpstring("property AddNew")] HRESULT AddNew([in] BSTR bstrName, [out, retval] IGuideDataProvider * *ppdataprovider);
[propget, id(didItemsByKey), helpstring("property ItemsByKey")] HRESULT ItemsByKey([in] IMetaPropertyType *pproptype, [in] IGuideDataProvider *pprovider, [in] long idLang, [in] long vt, [out, retval] IGuideDataProviders * *ppproviders);
[propget, id(didItemWithKey), helpstring("property ItemWithKey")] HRESULT ItemWithKey(VARIANT varIndex, [out, retval] IGuideDataProvider * *ppprovider);
[id(didResync), helpstring("method Resync")] HRESULT Resync();
};
[
uuid(3CFC7A68-76E9-4F1D-8ECE-08C44F4FFC3E),
helpstring("GuideDataProvider Class")
]
coclass GuideDataProvider
{
[default] interface IGuideDataProvider;
};
[
uuid(850A646E-140B-43B0-A243-20CC6B9FA8BC),
helpstring("IGuideDataProvidersEvents Interface")
]
dispinterface IGuideDataProvidersEvents
{
properties:
methods:
[id(didItemAdded), helpstring("method ItemAdded")] HRESULT ItemAdded(IChannelLineup *pchanlineup);
[id(didItemRemoved), helpstring("method ItemRemoved")] HRESULT ItemRemoved([in] long idObj);
[id(didItemChanged), helpstring("method ItemChanged")] HRESULT ItemChanged(IChannelLineup *pchanlineup);
[id(didItemsChanged), helpstring("method ItemsChanged")] HRESULT ItemsChanged();
};
[
uuid(6E30077E-2E0B-4D4A-92B0-CDB5E5116E3B),
helpstring("GuideDataProviders Class")
]
coclass GuideDataProviders
{
[default] interface IGuideDataProviders;
[default, source] dispinterface IGuideDataProvidersEvents;
};
};

View File

@ -0,0 +1,715 @@
// MSVidCtl.idl : IDL source for MSVidCtl.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (MSVidCtl.tlb) and marshalling code.
// Copyright (c) Microsoft Corporation 1998-2000
//
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (C) Microsoft Corporation, 1999-2000.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#pragma once")
#include <olectl.h>
#ifndef DO_NO_IMPORTS
#ifndef TUNING_MODEL_ONLY
import "mshtml.idl";
import "segment.idl";
#endif
#endif
#ifndef TUNING_MODEL_ONLY
typedef enum {
dispidInputs,
dispidOutputs,
dispid_Inputs,
dispid_Outputs,
dispidVideoRenderers,
dispidAudioRenderers,
dispidFeatures,
dispidInput,
dispidOutput,
dispidVideoRenderer,
dispidAudioRenderer,
dispidSelectedFeatures,
dispidView, // total graph control
dispidBuild,
dispidPause,
dispidRun,
dispidStop,
dispidDecompose,
dispidDisplaySize,
dispidMaintainAspectRatio,
dispidColorKey,
dispidStateChange,
dispidgetState,
dispidunbind,
dispidbind,
dispidDisableVideo,
dispidDisableAudio,
dispidViewNext,
dispidServiceP
} MSViddispidList;
typedef enum {
dslDefaultSize,
dslSourceSize = 0, // synonym
dslHalfSourceSize,
dslDoubleSourceSize,
dslFullScreen,
dslHalfScreen,
dslQuarterScreen,
dslSixteenthScreen
} DisplaySizeList;
typedef enum {
STATE_UNBUILT =-1,
STATE_STOP,
STATE_PAUSE,
STATE_PLAY,
} MSVidCtlStateList;
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////
//
// the full Viewer control
//
///////////////////////////////////////////////////////////////////////////////
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////////////
[
object,
uuid(B0EDF162-910A-11D2-B632-00C04F79498E),
dual,
hidden,
nonextensible,
helpstring("MS Video Control Interface"),
pointer_default(unique)
]
interface IMSVidCtl : IDispatch
{
// stock props
[propget, id(DISPID_AUTOSIZE)]
HRESULT AutoSize([out,retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_AUTOSIZE)]
HRESULT AutoSize([in]VARIANT_BOOL vbool);
[propget, id(DISPID_BACKCOLOR)]
HRESULT BackColor([out,retval]OLE_COLOR* backcolor);
[propput, id(DISPID_BACKCOLOR)]
HRESULT BackColor([in]OLE_COLOR backcolor);
[propget, id(DISPID_ENABLED)]
HRESULT Enabled([out,retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_ENABLED)]
HRESULT Enabled([in]VARIANT_BOOL vbool);
[propget, id(DISPID_TABSTOP)]
HRESULT TabStop([out, retval]VARIANT_BOOL* pbool);
[propput, id(DISPID_TABSTOP)]
HRESULT TabStop([in]VARIANT_BOOL vbool);
[propget, id(DISPID_HWND)]
HRESULT Window([out, retval]HWND* phwnd);
[id(DISPID_REFRESH)]
HRESULT Refresh();
// pseudo video renderer properties/methods that require access to ole container
[propget, id(dispidDisplaySize)]
HRESULT DisplaySize([out,retval]DisplaySizeList *CurrentValue);
[propput, id(dispidDisplaySize)]
HRESULT DisplaySize([in]DisplaySizeList NewValue);
[propget, id(dispidMaintainAspectRatio)]
HRESULT MaintainAspectRatio([out,retval]VARIANT_BOOL *CurrentValue);
[propput, id(dispidMaintainAspectRatio)]
HRESULT MaintainAspectRatio([in]VARIANT_BOOL NewValue);
// non-stock visual propertiies that require coordination/implementation with
// core ctl drawing/painting function
[propget, id(dispidColorKey)]
HRESULT ColorKey([out,retval]OLE_COLOR *CurrentValue);
[propput, id(dispidColorKey)]
HRESULT ColorKey([in]OLE_COLOR NewValue);
// availablee collection
[propget, id(dispidInputs), helpstring("Available Input Devices")] HRESULT InputsAvailable([in] BSTR CategoryGuid, [out, retval] IMSVidInputDevices * *pVal);
[propget, id(dispidOutputs), helpstring("Available Output Devices")] HRESULT OutputsAvailable([in] BSTR CategoryGuid, [out, retval] IMSVidOutputDevices * *pVal);
[propget, id(dispid_Inputs), hidden, restricted, helpstring("Available Input Devices")] HRESULT _InputsAvailable([in] LPCGUID CategoryGuid, [out, retval] IMSVidInputDevices * *pVal);
[propget, id(dispid_Outputs), hidden, restricted, helpstring("Available Output Devices")] HRESULT _OutputsAvailable([in] LPCGUID CategoryGuid, [out, retval] IMSVidOutputDevices * *pVal);
[propget, id(dispidVideoRenderers), helpstring("Available Video Renderers")] HRESULT VideoRenderersAvailable([out, retval] IMSVidVideoRendererDevices * *pVal);
[propget, id(dispidAudioRenderers), helpstring("Available Audio Renderers")] HRESULT AudioRenderersAvailable([out, retval] IMSVidAudioRendererDevices * *pVal);
[propget, id(dispidFeatures), helpstring("Available Features")] HRESULT FeaturesAvailable([out, retval] IMSVidFeatures * *pVal);
// current selections
[propget, id(dispidInput), helpstring("Currently Selected Input Device")] HRESULT InputActive([out, retval] IMSVidInputDevice **pVal);
[propput, id(dispidInput), helpstring("Currently Selected Input Device")] HRESULT InputActive([in] IMSVidInputDevice *pVal);
[propget, id(dispidOutput), helpstring("Currently Selected Output Devices")] HRESULT OutputsActive([out, retval] IMSVidOutputDevices **pVal);
[propput, id(dispidOutput), helpstring("Currently Selected Output Devices")] HRESULT OutputsActive([in] IMSVidOutputDevices *pVal);
[propget, id(dispidVideoRenderer), helpstring("Currently Selected Video Renderer")] HRESULT VideoRendererActive([out, retval] IMSVidVideoRenderer **pVal);
[propput, id(dispidVideoRenderer), helpstring("Currently Selected Video Renderer")] HRESULT VideoRendererActive([in] IMSVidVideoRenderer *pVal);
[propget, id(dispidAudioRenderer), helpstring("Currently Selected Audio Renderer")] HRESULT AudioRendererActive([out, retval] IMSVidAudioRenderer **pVal);
[propput, id(dispidAudioRenderer), helpstring("Currently Selected Audio Renderer")] HRESULT AudioRendererActive([in] IMSVidAudioRenderer *pVal);
[propget, id(dispidSelectedFeatures), helpstring("Currently Selected Features")] HRESULT FeaturesActive([out, retval] IMSVidFeatures **pVal);
[propput, id(dispidSelectedFeatures), helpstring("Currently Selected Features")] HRESULT FeaturesActive([in] IMSVidFeatures *pVal);
[propget, id(dispidgetState), helpstring("Check the current MSVidCtl state.")] HRESULT State([out, retval]MSVidCtlStateList* lState);
// methods
[id(dispidView), helpstring("Find an input device for viewing the specified item. This may be a string(VT_BSTR) or an object(VT_UNKNOWN).")] HRESULT View([in] VARIANT* v);
[id(dispidBuild), helpstring("Compose the graph")] HRESULT Build();
[id(dispidPause), helpstring("Stop the graph")] HRESULT Pause();
[id(dispidRun), helpstring("Compose the graph if necessary and start it running")] HRESULT Run();
[id(dispidStop), helpstring("Stop the graph")] HRESULT Stop();
[id(dispidDecompose), helpstring("Disassemble the graph(Inverse of Build)")] HRESULT Decompose();
[id(dispidDisableVideo), helpstring("set active video renderer to nothing")] HRESULT DisableVideo();
[id(dispidDisableAudio), helpstring("set active Audio renderer to nothing")] HRESULT DisableAudio();
[id(dispidViewNext), helpstring("Find another input device for viewing the specified item. Works like View except skips current input")] HRESULT ViewNext([in] VARIANT* v);
[propput, id(dispidServiceP), helpstring("Set Service Provider")] HRESULT ServiceProvider([in] IUnknown* pServiceP);
};
///Added for the mseventbinder
[
object,
dual,
oleautomation,
hidden,
nonextensible,
pointer_default(unique),
uuid(C3A9F406-2222-436D-86D5-BA3229279EFB),
helpstring("IMSEventBinder Interface"),
]
interface IMSEventBinder : IDispatch {
[id(dispidbind), helpstring("method Bind")] HRESULT Bind([in]LPDISPATCH pEventObject, [in]BSTR EventName, [in]BSTR EventHandler, [out, retval] LONG * CancelID);
[id(dispidunbind), helpstring("method Unbind")] HRESULT Unbind([in]DWORD CancelCookie);
};
#endif // TUNING_MODEL_ONLY
//*****************************************************************************
//*****************************************************************************
//////////////////////////////////////////////////////////////////////////////////////
// Type Library for MS Video Control
//////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************
//*****************************************************************************
[
uuid(B0EDF154-910A-11D2-B632-00C04F79498E),
version(1.0),
helpstring("MS Video Control 1.0 Type Library")
]
library MSVidCtlLib
{
importlib("stdole2.tlb");
#ifndef TUNING_MODEL_ONLY
///////////////////////////////////////////////////////////////////////////////////////
// event interfaces
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(B0EDF164-910A-11D2-B632-00C04F79498E),
helpstring("MS Video Control Events Interface")
]
dispinterface _IMSVidCtlEvents
{
properties:
// Event interface has no properties
methods:
[id(DISPID_CLICK)] void Click();
[id(DISPID_DBLCLICK)] void DblClick();
[id(DISPID_KEYDOWN)] void KeyDown(short* KeyCode, short Shift);
[id(DISPID_KEYPRESS)] void KeyPress(short* KeyAscii);
[id(DISPID_KEYUP)] void KeyUp(short* KeyCode, short Shift);
[id(DISPID_MOUSEDOWN)] void MouseDown(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
[id(DISPID_MOUSEMOVE)] void MouseMove(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
[id(DISPID_MOUSEUP)] void MouseUp(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
[id(DISPID_ERROREVENT)] void Error(short Number, BSTR* Description, long Scode, BSTR Source, BSTR HelpFile, long HelpContext, boolean* CancelDisplay);
[id(dispidStateChange)] void StateChange(MSVidCtlStateList PrevState, MSVidCtlStateList CurrState);
};
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////////////
// device classes
///////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************
// inputs
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(1C15D484-911D-11d2-B632-00C04F79498E),
helpstring("MS Video Control Analog TV Tuner Device Class")
]
coclass MSVidAnalogTunerDevice
{
[default] interface IMSVidAnalogTuner;
[default, source] interface IMSVidAnalogTunerEvent;
interface IMSVidGraphSegment;
};
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(A2E3074E-6C3D-11d3-B653-00C04F79498E),
helpstring("MS Video Control BDA Tuner Device Class")
]
coclass MSVidBDATunerDevice
{
[default] interface IMSVidTuner;
[default, source] interface IMSVidTunerEvent;
interface IMSVidGraphSegment;
};
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(37B0353C-A4C8-11d2-B634-00C04F79498E),
helpstring("MS Video Control File Playback Device Class")
]
coclass MSVidFilePlaybackDevice
{
[default] interface IMSVidFilePlayback;
[default, source] interface IMSVidFilePlaybackEvent;
interface IMSVidGraphSegment;
};
[
uuid(011B3619-FE63-4814-8A84-15A194CE9CE3),
helpstring("MSVidWebDVD Class")
]
coclass MSVidWebDVD
{
[default] interface IMSVidWebDVD;
[default, source] interface IMSVidWebDVDEvent;
interface IMSVidGraphSegment;
};
[
uuid(FA7C375B-66A7-4280-879D-FD459C84BB02),
helpstring("MSVidWebDVDAdm Class")
]
coclass MSVidWebDVDAdm
{
[default] interface IMSVidWebDVDAdm;
};
// rendererers
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(37B03543-A4C8-11d2-B634-00C04F79498E),
helpstring("MS Video Control Video Renderer Class")
]
coclass MSVidVideoRenderer
{
[default] interface IMSVidVideoRenderer2;
interface IMSVidVideoRenderer;
[default, source] interface IMSVidVideoRendererEvent;
//[default, source] interface IMSVidVideoRendererEvent2;
interface IMSVidGraphSegment;
};
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(37B03544-A4C8-11d2-B634-00C04F79498E),
helpstring("MS Video Control Audio Renderer Class")
]
coclass MSVidAudioRenderer
{
[default] interface IMSVidAudioRenderer;
[default, source] interface IMSVidAudioRendererEvent;
interface IMSVidGraphSegment;
};
// Stream Buffer Sink and Source and Playback
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(9E77AAC4-35E5-42a1-BDC2-8F3FF399847C),
helpstring("MS Video Control Stream Buffer Engine Sink Class")
]
coclass MSVidStreamBufferSink
{
[default] interface IMSVidStreamBufferSink;
[default, source] interface IMSVidStreamBufferSinkEvent;
interface IMSVidGraphSegment;
};
//////////////////////////////////////////////////////////////////////////////////////
[
uuid(AD8E510D-217F-409b-8076-29C5E73B98E8),
helpstring("MS Video Control Stream Buffer Engine Playback Device Class")
]
coclass MSVidStreamBufferSource
{
[default] interface IMSVidStreamBufferSource;
[default, source] interface IMSVidStreamBufferSourceEvent;
interface IMSVidGraphSegment;
};
// features
[
uuid(334125C0-77E5-11d3-B653-00C04F79498E),
helpstring("MS Video Control Standard Data Services for Broadcast IP through NDIS stack")
]
coclass MSVidDataServices
{
interface IMSVidDataServices;
};
[
uuid(BB530C63-D9DF-4b49-9439-63453962E598),
helpstring("MS Video Control Encoder")
]
coclass MSVidEncoder
{
interface IMSVidEncoder;
};
[
uuid(0149EEDF-D08F-4142-8D73-D23903D21E90),
helpstring("MS Video Control Encoder")
]
coclass MSVidXDS
{
interface IMSVidXDS;
};
[
uuid(7F9CB14D-48E4-43b6-9346-1AEBC39C64D3),
helpstring("MS Video Control Standard Closed Captioning")
]
coclass MSVidClosedCaptioning
{
[default] interface IMSVidClosedCaptioning2;
interface IMSVidClosedCaptioning;
};
///////////////////////////////////////////////////////////////////////////////////////
// control classes
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(B0EDF163-910A-11D2-B632-00C04F79498E),
control,
helpstring("MS Video Control Class")
]
coclass MSVidCtl
{
[default] interface IMSVidCtl;
[default, source] dispinterface _IMSVidCtlEvents;
interface IMSVidGraphSegmentContainer;
};
///////////////////////////////////////////////////////////////////////////////////////
// device collections
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(C5702CCC-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Input Device Collection Class")
]
coclass MSVidInputDevices
{
[default] interface IMSVidInputDevices;
};
[
uuid(C5702CCD-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Output Device Collection Class")
]
coclass MSVidOutputDevices
{
[default] interface IMSVidOutputDevices;
};
[
uuid(C5702CCE-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Video Renderer Device Collection Class")
]
coclass MSVidVideoRendererDevices
{
[default] interface IMSVidVideoRendererDevices;
};
[
uuid(C5702CCF-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Audio Renderer Device Collection Class")
]
coclass MSVidAudioRendererDevices
{
[default] interface IMSVidAudioRendererDevices;
};
[
uuid(C5702CD0-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Feature Collection Class")
]
coclass MSVidFeatures
{
[default] interface IMSVidFeatures;
};
///////////////////////////////////////////////////////////////////////////////////////
// composites
///////////////////////////////////////////////////////////////////////////////////////
[
uuid(2764BCE5-CC39-11D2-B639-00C04F79498E),
helpstring("MS Video Control Generic Composition Class")
]
coclass MSVidGenericComposite
{
interface IMSVidCompositionSegment;
};
[
uuid(E18AF75A-08AF-11d3-B64A-00C04F79498E),
helpstring("MS Video Control Custom Composition for Analog Capture to Overlay Mixer")
]
coclass MSVidAnalogCaptureToOverlayMixer
{
interface IMSVidCompositionSegment;
};
[
uuid(C5702CD6-9B79-11d3-B654-00C04F79498E),
helpstring("MS Video Control Custom Composition for Analog Capture to Data Services")
]
coclass MSVidAnalogCaptureToDataServices
{
interface IMSVidCompositionSegment;
};
[
uuid(267db0b3-55e3-4902-949b-df8f5cec0191),
helpstring("MS Video Control Custom Composition for WebDVD to Overlay Mixer")
]
coclass MSVidWebDVDToVideoRenderer
{
interface IMSVidCompositionSegment;
};
[
uuid(8D04238E-9FD1-41c6-8DE3-9E1EE309E935),
helpstring("MS Video Control Custom Composition for WebDVD to Audio Renderer")
]
coclass MSVidWebDVDToAudioRenderer
{
interface IMSVidCompositionSegment;
};
[
uuid(6AD28EE1-5002-4e71-AAF7-BD077907B1A4),
helpstring("MS Video Control Custom Composition for Mpeg2 Decoder to Closed Captioning")
]
coclass MSVidMPEG2DecoderToClosedCaptioning
{
interface IMSVidCompositionSegment;
};
[
uuid(9F50E8B1-9530-4ddc-825E-1AF81D47AED6),
helpstring("MS Video Control Custom Composition for Analog Capture to Stream Buffer Sink")
]
coclass MSVidAnalogCaptureToStreamBufferSink
{
interface IMSVidCompositionSegment;
};
[
uuid(ABE40035-27C3-4a2f-8153-6624471608AF),
helpstring("MS Video Control Custom Composition for Digital Capture to Stream Buffer Sink")
]
coclass MSVidDigitalCaptureToStreamBufferSink
{
interface IMSVidCompositionSegment;
};
[
uuid(38F03426-E83B-4e68-B65B-DCAE73304838),
helpstring("MS Video Control Custom Composition for Data Services to Stream Buffer Sink")
]
coclass MSVidDataServicesToStreamBufferSink
{
interface IMSVidCompositionSegment;
};
[
uuid(0429EC6E-1144-4bed-B88B-2FB9899A4A3D),
helpstring("MS Video Control Custom Composition for DataServices To XDS")
]
coclass MSVidDataServicesToXDS
{
interface IMSVidCompositionSegment;
};
[
uuid(A0B9B497-AFBC-45ad-A8A6-9B077C40D4F2),
helpstring("MS Video Control Custom Composition for Encoder to Stream Buffer Sink")
]
coclass MSVidEncoderToStreamBufferSink
{
interface IMSVidCompositionSegment;
};
[
uuid(B401C5EB-8457-427f-84EA-A4D2363364B0),
helpstring("MS Video Control Custom Composition for File Playback to Video Renderer")
]
coclass MSVidFilePlaybackToVideoRenderer
{
interface IMSVidCompositionSegment;
};
[
uuid(CC23F537-18D4-4ece-93BD-207A84726979),
helpstring("MS Video Control Custom Composition for File Playback to Audio Renderer")
]
coclass MSVidFilePlaybackToAudioRenderer
{
interface IMSVidCompositionSegment;
};
[
uuid(28953661-0231-41db-8986-21FF4388EE9B),
helpstring("MS Video Control Custom Composition for TV Tuner to Encoder")
]
coclass MSVidAnalogTVToEncoder
{
interface IMSVidCompositionSegment;
};
[
uuid(3C4708DC-B181-46a8-8DA8-4AB0371758CD),
helpstring("MS Video Control Custom Composition for SBE Source to Video renderer")
]
coclass MSVidStreamBufferSourceToVideoRenderer
{
interface IMSVidCompositionSegment;
};
[
uuid(3540D440-5B1D-49cb-821A-E84B8CF065A7),
helpstring("MS Video Control Custom Composition for TV Tuner to XDS")
]
coclass MSVidAnalogCaptureToXDS
{
interface IMSVidCompositionSegment;
};
[
uuid(9193A8F9-0CBA-400e-AA97-EB4709164576),
helpstring("MS Video Control Custom Composition for Stream Buffer Source to CC")
]
coclass MSVidSBESourceToCC
{
interface IMSVidCompositionSegment;
};
///////////////////////////////////////////////////////////////////////////////////////
// Miscellaneous
///////////////////////////////////////////////////////////////////////////////////////
// Events
[
uuid(577FAA18-4518-445E-8F70-1473F8CF4BA4),
helpstring("MSEventBinder Class")
]
coclass MSEventBinder
{
[default] interface IMSEventBinder;
};
[
uuid(CAAFDD83-CEFC-4e3d-BA03-175F17A24F91),
helpstring("MSVidStreamBufferRecordingControl")
]
coclass MSVidStreamBufferRecordingControl
{
[default] interface IMSVidStreamBufferRecordingControl;
};
// vidrect class
[
hidden, restricted,
uuid(CB4276E6-7D5F-4cf1-9727-629C5E6DB6AE),
helpstring("Automation compliant scalable rectangle Class")
]
coclass MSVidRect
{
[default] interface IMSVidRect;
};
// NOTE: there is no object factory for the following classes.
// the implementation for the underlying code is a c++ abstract base class.
// this coclass is only provided here to force vb to expose the base interface
// to enable polymorphic access to derived objects
[
hidden, restricted,
uuid(6E40476F-9C49-4c3e-8BB9-8587958EFF74),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidDevice
{
[default] interface IMSVidDevice;
};
[
hidden, restricted,
uuid(AC1972F2-138A-4ca3-90DA-AE51112EDA28),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidInputDevice
{
[default] interface IMSVidInputDevice;
};
[
hidden, restricted,
uuid(95F4820B-BB3A-4e2d-BC64-5B817BC2C30E),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidVideoInputDevice
{
[default] interface IMSVidVideoInputDevice;
};
[
hidden, restricted,
uuid(1990D634-1A5E-4071-A34A-53AAFFCE9F36),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidVideoPlaybackDevice
{
[default] interface IMSVidPlayback;
};
[
hidden, restricted,
uuid(7748530B-C08A-47ea-B24C-BE8695FF405F),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidFeature
{
[default] interface IMSVidFeature;
};
[
hidden, restricted,
uuid(87EB890D-03AD-4e9d-9866-376E5EC572ED),
helpstring("dummy class to expose base interface to VB")
]
coclass MSVidOutput
{
[default] interface IMSVidOutputDevice;
};
#endif //TUNING_MODEL_ONLY
};
// end of file msvidctl.idl

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,172 @@
//------------------------------------------------------------------------------
// File: VideoAcc.idl
//
// Desc: An interface exposed by the overlay mixer to help decode samples
// using hardware video acceleration.
//
// Copyright (c) 1992-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
cpp_quote("//")
cpp_quote("// The following declarations within the 'if 0' block are dummy typedefs used to make")
cpp_quote("// the motncomp.idl file build. The actual definitions are contained in ddraw.h and amva.h")
cpp_quote("//")
cpp_quote("#if 0")
typedef void* LPVOID;
typedef void* LPGUID;
typedef void* LPDIRECTDRAWSURFACE;
typedef void* LPDDPIXELFORMAT;
typedef void* LPAMVAInternalMemInfo;
typedef void AMVAUncompDataInfo;
typedef void* LPAMVACompBufferInfo;
typedef void AMVABUFFERINFO;
typedef void AMVAEndFrameInfo;
typedef void* LPAMVAUncompBufferInfo;
typedef void AMVABeginFrameInfo;
typedef IUnknown* IMediaSample;
cpp_quote("#endif")
cpp_quote("#include <ddraw.h>")
cpp_quote("#include <amva.h>")
[
local,
object,
uuid(256A6A21-FBAD-11d1-82BF-00A0C9696C8F),
helpstring("IAMVideoAcceleratorNotify Interface"),
pointer_default(unique)
]
// IAMVideoAcceleratorNotify
interface IAMVideoAcceleratorNotify : IUnknown
{
// get information necessary to allocate uncompressed data buffers
// which is not part of the mediatype format (like how many buffers to allocate etc)
HRESULT GetUncompSurfacesInfo([in] const GUID *pGuid, [in] [out] LPAMVAUncompBufferInfo pUncompBufferInfo);
// set information regarding allocated uncompressed data buffers
HRESULT SetUncompSurfacesInfo([in] DWORD dwActualUncompSurfacesAllocated);
// get information necessary to create video accelerator object. It is the caller's responsibility
// to call CoTaskMemFree() on *ppMiscData
HRESULT GetCreateVideoAcceleratorData([in] const GUID *pGuid, [out] LPDWORD pdwSizeMiscData, [out] LPVOID *ppMiscData);
};
[
local,
object,
uuid(256A6A22-FBAD-11d1-82BF-00A0C9696C8F),
helpstring("IAMVideoAccelerator Interface"),
pointer_default(unique)
]
// IAMVideoAccelerator
interface IAMVideoAccelerator : IUnknown
{
// pdwNumGuidsSupported is an IN OUT paramter
// pGuidsSupported is an IN OUT paramter
// if pGuidsSupported is NULL, pdwNumGuidsSupported should return back with the
// number of uncompressed pixel formats supported
// Otherwise pGuidsSupported is an array of *pdwNumGuidsSupported structures
HRESULT GetVideoAcceleratorGUIDs([in] [out] LPDWORD pdwNumGuidsSupported, [in] [out] LPGUID pGuidsSupported);
// pGuid is an IN parameter
// pdwNumFormatsSupported is an IN OUT paramter
// pFormatsSupported is an IN OUT paramter (caller should make sure to set the size of EACH struct)
// if pFormatsSupported is NULL, pdwNumFormatsSupported should return back with
// the number of uncompressed pixel formats supported
// Otherwise pFormatsSupported is an array of *pdwNumFormatsSupported structures
HRESULT GetUncompFormatsSupported( [in] const GUID *pGuid, [in] [out] LPDWORD pdwNumFormatsSupported,
[in] [out] LPDDPIXELFORMAT pFormatsSupported);
// pGuid is an IN parameter
// pamvaUncompDataInfo is an IN parameter
// pamvaInternalMemInfo is an IN OUT parameter (caller should make sure to set the size of struct)
// currently only gets info about how much scratch memory will the hal allocate for its private use
HRESULT GetInternalMemInfo([in] const GUID *pGuid, [in] const AMVAUncompDataInfo *pamvaUncompDataInfo,
[in] [out] LPAMVAInternalMemInfo pamvaInternalMemInfo);
// pGuid is an IN parameter
// pamvaUncompDataInfo is an IN parameter
// pdwNumTypesCompBuffers is an IN OUT paramter
// pamvaCompBufferInfo is an IN OUT paramter (caller should make sure to set the size of EACH struct)
// if pamvaCompBufferInfo is NULL, pdwNumTypesCompBuffers should return back with the number of types of
// compressed buffers
// Otherwise pamvaCompBufferInfo is an array of *pdwNumTypesCompBuffers structures
HRESULT GetCompBufferInfo([in] const GUID *pGuid, [in] const AMVAUncompDataInfo *pamvaUncompDataInfo,
[in] [out] LPDWORD pdwNumTypesCompBuffers, [out] LPAMVACompBufferInfo pamvaCompBufferInfo);
// pdwNumTypesCompBuffers is an IN OUT paramter
// pamvaCompBufferInfo is an IN OUT paramter (caller should make sure to set the size of EACH struct)
// if pamvaCompBufferInfo is NULL, pdwNumTypesCompBuffers should return back with the number of types of
// compressed buffers
// Otherwise pamvaCompBufferInfo is an array of *pdwNumTypesCompBuffers structures
// only valid to call this after the pins are connected
HRESULT GetInternalCompBufferInfo([in] [out] LPDWORD pdwNumTypesCompBuffers, [out] LPAMVACompBufferInfo pamvaCompBufferInfo);
// begin a frame, the pMiscData is passed directly to the hal
// only valid to call this after the pins are connected
// Tells the ovmixer which frame is the destination
// frame. Use indices (valid vales are [0 .. pdwNumSurfacesAllocated-1]) to specify frames
HRESULT BeginFrame([in] const AMVABeginFrameInfo *amvaBeginFrameInfo);
// end a frame, the pMiscData is passed directly to the hal
// only valid to call this after the pins are connected
HRESULT EndFrame([in] const AMVAEndFrameInfo *pEndFrameInfo);
// lock and obtain access to a single buffer
// only valid to call this after the pins are connected
// Buffers are identified by type and index within that type
// Specifiying read-only will allow access to busy reference
// frames
// Output (uncompressed) frames use a type index of 0xFFFFFFFF
HRESULT GetBuffer(
[in] DWORD dwTypeIndex,
[in] DWORD dwBufferIndex,
[in] BOOL bReadOnly,
[out] LPVOID *ppBuffer,
[out] LONG *lpStride);
// unlock a single buffer
// Buffers are identified by type and index within that type
// only valid to call this after the pins are connected
HRESULT ReleaseBuffer([in] DWORD dwTypeIndex, [in] DWORD dwBufferIndex);
// Perform a decompression operation
// Private data can be passed to and from a driver
// identifiers for the corresponding members of pamvaMacroBlockInfo
// pamvaMacroBlockInfo is an IN parameter which is array (of length dwNumBlocks) of structures
// only valid to call this after the pins are connected
HRESULT Execute(
[in] DWORD dwFunction,
[in] LPVOID lpPrivateInputData,
[in] DWORD cbPrivateInputData,
[in] LPVOID lpPrivateOutputDat,
[in] DWORD cbPrivateOutputData,
[in] DWORD dwNumBuffers,
[in] const AMVABUFFERINFO *pamvaBufferInfo);
// query the decode status of a particular decompression operation
// dwTypeIndex and dwBufferIndex define the buffer whose status is
// being queried
HRESULT QueryRenderStatus([in] DWORD dwTypeIndex,
[in] DWORD dwBufferIndex,
[in] DWORD dwFlags);
// display a frame. The mediasample contains the timestamps etc for the frame to be displayed
// this call is a non-blocking call
// only valid to call this after the pins are connected
HRESULT DisplayFrame([in] DWORD dwFlipToIndex, [in] IMediaSample *pMediaSample);
};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,334 @@
//------------------------------------------------------------------------------
// File: AMStream.idl
//
// Desc:
//
// Copyright (c) 1998 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "mmstream.idl";
import "strmif.idl";
cpp_quote("#include <ddraw.h>")
cpp_quote("#include <mmsystem.h>")
cpp_quote("#include <mmstream.h>")
cpp_quote("#include <ddstream.h>")
cpp_quote("#include <austream.h>")
interface IAMMultiMediaStream;
interface IAMMediaStream;
interface IMediaStreamFilter;
interface IDirectDraw;
interface IDirectDrawSurface;
interface IAMMediaTypeStream;
interface IAMMediaTypeSample;
// Flags definitions for IAMMultiMediaStream::Initialize
enum {
AMMSF_NOGRAPHTHREAD = 0x00000001
};
// Flags definitions for AddMediaStream and IAMMediaStream::Initialize
enum {
// Don't add a stream - create a default renderer instead
// for the supplied purpose id
AMMSF_ADDDEFAULTRENDERER = 0x00000001,
AMMSF_CREATEPEER = 0x00000002,
// If no samples are created when we run or the last sample
// is deleted then terminate this stream
AMMSF_STOPIFNOSAMPLES = 0x00000004,
// If Update is not called keep going
AMMSF_NOSTALL = 0x00000008
};
// Flag definitions for OpenFile and OpenMoniker
enum {
AMMSF_RENDERTYPEMASK = 0x00000003,
AMMSF_RENDERTOEXISTING = 0x00000000,
AMMSF_RENDERALLSTREAMS = 0x00000001,
AMMSF_NORENDER = 0x00000002,
AMMSF_NOCLOCK = 0x00000004,
AMMSF_RUN = 0x00000008
};
typedef [v1_enum] enum {
Disabled = 0,
ReadData = 1,
RenderData = 2
} OUTPUT_STATE;
[
object,
uuid(7DB01C96-C0C3-11d0-8FF1-00C04FD9189D),
dual,
helpstring("IDirectShowStream Interface"),
pointer_default(unique)
]
interface IDirectShowStream : IDispatch
{
[propget, id(1), helpstring("property FileName")] HRESULT FileName([out, retval] BSTR *pVal);
[propput, id(1), helpstring("property FileName")] HRESULT FileName([in] BSTR newVal);
[propget, id(2), helpstring("property Video")] HRESULT Video([out, retval] OUTPUT_STATE *pVal);
[propput, id(2), helpstring("propetry Video")] HRESULT Video([in] OUTPUT_STATE newVal);
[propget, id(3), helpstring("property Audio")] HRESULT Audio([out, retval] OUTPUT_STATE *pVal);
[propput, id(3), helpstring("propetry Audio")] HRESULT Audio([in] OUTPUT_STATE newVal);
};
// IAMMultiMediaStream interface
[
object,
uuid(BEBE595C-9A6F-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IAMMultiMediaStream : IMultiMediaStream
{
HRESULT Initialize(
[in] STREAM_TYPE StreamType,
[in] DWORD dwFlags,
[in] IGraphBuilder *pFilterGraph);
HRESULT GetFilterGraph(
[out] IGraphBuilder **ppGraphBuilder);
HRESULT GetFilter(
[out] IMediaStreamFilter **ppFilter);
HRESULT AddMediaStream(
[in] IUnknown *pStreamObject,
[in] const MSPID *PurposeId,
[in] DWORD dwFlags,
[out] IMediaStream **ppNewStream);
HRESULT OpenFile(
[in] LPCWSTR pszFileName,
[in] DWORD dwFlags);
HRESULT OpenMoniker(
[in] IBindCtx *pCtx,
[in] IMoniker *pMoniker,
[in] DWORD dwFlags);
HRESULT Render(
[in] DWORD dwFlags);
}
// IAMMediaStream interface
[
object,
uuid(BEBE595D-9A6F-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IAMMediaStream : IMediaStream
{
HRESULT Initialize(
[in] IUnknown *pSourceObject,
[in] DWORD dwFlags,
[in] REFMSPID PurposeId,
[in] const STREAM_TYPE StreamType);
HRESULT SetState(
[in] FILTER_STATE State);
HRESULT JoinAMMultiMediaStream(
[in] IAMMultiMediaStream *pAMMultiMediaStream);
HRESULT JoinFilter(
[in] IMediaStreamFilter *pMediaStreamFilter);
HRESULT JoinFilterGraph(
[in] IFilterGraph *pFilterGraph);
};
// IMediaStreamFilter interface
[
object,
local,
uuid(BEBE595E-9A6F-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IMediaStreamFilter : IBaseFilter
{
HRESULT AddMediaStream(
[in] IAMMediaStream *pAMMediaStream);
HRESULT GetMediaStream(
[in] REFMSPID idPurpose,
[out] IMediaStream **ppMediaStream);
HRESULT EnumMediaStreams(
[in] long Index,
[out] IMediaStream **ppMediaStream);
HRESULT SupportSeeking(
[in] BOOL bRenderer);
HRESULT ReferenceTimeToStreamTime(
[in] [out] REFERENCE_TIME *pTime);
HRESULT GetCurrentStreamTime(
[out] REFERENCE_TIME *pCurrentStreamTime);
HRESULT WaitUntil(
[in] REFERENCE_TIME WaitStreamTime);
HRESULT Flush(
[in] BOOL bCancelEOS);
HRESULT EndOfStream();
};
[
object,
local,
uuid(AB6B4AFC-F6E4-11d0-900D-00C04FD9189D),
pointer_default(unique)
]
interface IDirectDrawMediaSampleAllocator : IUnknown
{
HRESULT GetDirectDraw(IDirectDraw **ppDirectDraw);
};
[
object,
local,
uuid(AB6B4AFE-F6E4-11d0-900D-00C04FD9189D),
pointer_default(unique)
]
interface IDirectDrawMediaSample : IUnknown
{
HRESULT GetSurfaceAndReleaseLock(
[out] IDirectDrawSurface **ppDirectDrawSurface,
[out] RECT * pRect);
HRESULT LockMediaSamplePointer(void);
};
[
object,
local,
uuid(AB6B4AFA-F6E4-11d0-900D-00C04FD9189D),
pointer_default(unique)
]
interface IAMMediaTypeStream : IMediaStream
{
HRESULT GetFormat(
[out] AM_MEDIA_TYPE * pMediaType,
[in] DWORD dwFlags);
HRESULT SetFormat(
[in] AM_MEDIA_TYPE * pMediaType,
[in] DWORD dwFlags);
HRESULT CreateSample(
[in] long lSampleSize,
[in] BYTE * pbBuffer,
[in] DWORD dwFlags,
[in] IUnknown *pUnkOuter,
[out] IAMMediaTypeSample ** ppAMMediaTypeSample);
HRESULT GetStreamAllocatorRequirements(
[out] ALLOCATOR_PROPERTIES *pProps);
HRESULT SetStreamAllocatorRequirements(
[in] ALLOCATOR_PROPERTIES *pProps);
};
[
object,
local,
uuid(AB6B4AFB-F6E4-11d0-900D-00C04FD9189D),
pointer_default(unique)
]
interface IAMMediaTypeSample : IStreamSample
{
//
// Unique methods for IAMMediaTypeSample
//
HRESULT SetPointer([in] BYTE *pBuffer, [in] long lSize);
//
// Mirror of IMediaSample
//
HRESULT GetPointer([out] BYTE ** ppBuffer);
long GetSize(void);
HRESULT GetTime([out] REFERENCE_TIME * pTimeStart, [out] REFERENCE_TIME * pTimeEnd);
HRESULT SetTime([in] REFERENCE_TIME * pTimeStart, [in] REFERENCE_TIME * pTimeEnd);
HRESULT IsSyncPoint(void);
HRESULT SetSyncPoint(BOOL bIsSyncPoint);
HRESULT IsPreroll(void);
HRESULT SetPreroll(BOOL bIsPreroll);
long GetActualDataLength(void);
HRESULT SetActualDataLength(long);
HRESULT GetMediaType(AM_MEDIA_TYPE **ppMediaType);
HRESULT SetMediaType(AM_MEDIA_TYPE *pMediaType);
HRESULT IsDiscontinuity(void);
HRESULT SetDiscontinuity(BOOL bDiscontinuity);
HRESULT GetMediaTime([out] LONGLONG * pTimeStart, [out] LONGLONG * pTimeEnd);
HRESULT SetMediaTime([in] LONGLONG * pTimeStart, [in] LONGLONG * pTimeEnd);
};
[
uuid(4E6CDE29-C0C4-11d0-8FF1-00C04FD9189D),
version(1.0),
helpstring("DirectShowStream 1.0 Type Library")
]
library DirectShowStreamLib
{
importlib("stdole2.tlb");
[
uuid(49c47ce5-9ba4-11d0-8212-00c04fc32c45),
helpstring("DirectShow Multi Media Stream")
]
coclass AMMultiMediaStream
{
[default] dispinterface IDirectShowStream;
};
};
//
// The MIDL compiler wants to produce a CLSID for everything defined in
// our type library, but it also wants to generate huge proxy code,
// so we use DEFINE_GUID for all other classes. It has another interesting
// bug in that it defines CLSID_AMMultiMediaStream within a #ifdef __cplusplus
// block, so we need to define it outside of that scope.
//
cpp_quote("#ifndef __cplusplus")
cpp_quote("EXTERN_C const CLSID CLSID_AMMultiMediaStream;")
cpp_quote("#endif")
cpp_quote("DEFINE_GUID(CLSID_AMDirectDrawStream, /* 49c47ce4-9ba4-11d0-8212-00c04fc32c45 */")
cpp_quote("0x49c47ce4, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
cpp_quote("DEFINE_GUID(CLSID_AMAudioStream, /* 8496e040-af4c-11d0-8212-00c04fc32c45 */")
cpp_quote("0x8496e040, 0xaf4c, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
cpp_quote("DEFINE_GUID(CLSID_AMAudioData, /* f2468580-af8a-11d0-8212-00c04fc32c45 */")
cpp_quote("0xf2468580, 0xaf8a, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
cpp_quote("DEFINE_GUID(CLSID_AMMediaTypeStream, /* CF0F2F7C-F7BF-11d0-900D-00C04FD9189D */")
cpp_quote("0xcf0f2f7c, 0xf7bf, 0x11d0, 0x90, 0xd, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")

View File

@ -0,0 +1,106 @@
//------------------------------------------------------------------------------
// File: AuStream.idl
//
// Desc: Used by MIDL tool to generate austream.h
//
// Copyright (c) 1998-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "mmstream.idl";
cpp_quote("//")
cpp_quote("// The following declarations within the 'if 0' block are dummy typedefs used to make")
cpp_quote("// the ddstream.idl file build. The actual definitions are contained in DDRAW.H")
cpp_quote("//")
cpp_quote("#if 0")
typedef struct tWAVEFORMATEX WAVEFORMATEX;
cpp_quote ("#endif")
interface IAudioMediaStream;
interface IAudioStreamSample;
interface IMemoryData;
interface IAudioData;
// IAudioMediaStream
[
object,
local,
uuid(f7537560-a3be-11d0-8212-00c04fc32c45),
pointer_default(unique)
]
interface IAudioMediaStream : IMediaStream
{
HRESULT GetFormat(
[out] WAVEFORMATEX *pWaveFormatCurrent
);
HRESULT SetFormat(
[in] const WAVEFORMATEX *lpWaveFormat);
HRESULT CreateSample(
[in] IAudioData *pAudioData,
[in] DWORD dwFlags,
[out] IAudioStreamSample **ppSample
);
}
[
object,
local,
uuid(345fee00-aba5-11d0-8212-00c04fc32c45),
pointer_default(unique)
]
interface IAudioStreamSample : IStreamSample
{
HRESULT GetAudioData(
[out] IAudioData **ppAudio
);
}
[
object,
local,
uuid(327fc560-af60-11d0-8212-00c04fc32c45),
pointer_default(unique)
]
interface IMemoryData : IUnknown
{
HRESULT SetBuffer(
[in] DWORD cbSize,
[in] BYTE *pbData,
[in] DWORD dwFlags
);
HRESULT GetInfo(
[out] DWORD *pdwLength,
[out] BYTE **ppbData,
[out] DWORD *pcbActualData
);
HRESULT SetActual(
[in] DWORD cbDataValid
);
}
[
object,
local,
uuid(54c719c0-af60-11d0-8212-00c04fc32c45),
pointer_default(unique)
]
interface IAudioData : IMemoryData
{
HRESULT GetFormat(
[out] WAVEFORMATEX *pWaveFormatCurrent
);
HRESULT SetFormat(
[in] const WAVEFORMATEX *lpWaveFormat
);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,912 @@
//==========================================================================;
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
// PURPOSE.
//
// Copyright (c) 1992 - 2002 Microsoft Corporation. All Rights Reserved.
//
//--------------------------------------------------------------------------;
// Neutral/English language type library for basic Quartz control interfaces
// the quartz type library defines the basic control interfaces
[
uuid(56a868b0-0ad4-11ce-b03a-0020af0ba770),
helpstring("ActiveMovie control type library"),
lcid(0x0000),
version(1.0)
]
library QuartzTypeLib
{
importlib("STDOLE2.TLB");
// types are restricted to be automation-compatible
typedef double REFTIME; // ReferenceTime
typedef LONG_PTR OAEVENT; // should be a HANDLE
typedef LONG_PTR OAHWND; // should be an hwnd
// from strmif.idl
typedef long OAFilterState;
// collection interface - represents a collection of IUnknowns
// this is used below to collect filter-info objects, registry-filters
// pin-info objects and wrapped media type objects
[
uuid(56a868b9-0ad4-11ce-b03a-0020af0ba770),
helpstring("Collection"),
odl,
oleautomation,
dual
]
interface IAMCollection : IDispatch
{
// number of items in collection
[propget]
HRESULT Count(
[out, retval] LONG* plCount);
// return IUnknown for contained item by index
HRESULT Item(
[in] long lItem,
[out] IUnknown** ppUnk);
// return IUnknown for an object that implements IEnumVARIANT on
// this collection
[propget]
HRESULT _NewEnum(
[out, retval] IUnknown** ppUnk);
}
// core control providing state control
[
uuid(56a868b1-0ad4-11ce-b03a-0020af0ba770),
helpstring("IMediaControl interface"),
odl,
oleautomation,
dual
]
interface IMediaControl : IDispatch
{
// methods
HRESULT Run();
HRESULT Pause();
HRESULT Stop();
//returns the state. same semantics as IMediaFilter::GetState
HRESULT GetState(
[in] LONG msTimeout,
[out] OAFilterState* pfs);
// adds and connects filters needed to play the specified file
// (same as IFilterGraph::RenderFile)
HRESULT RenderFile(
[in] BSTR strFilename);
// adds to the graph the source filter that can read this file,
// and returns an IFilterInfo object for it (actually returns
// an IDispatch for the IFilterInfo object).
HRESULT AddSourceFilter(
[in] BSTR strFilename,
[out] IDispatch**ppUnk);
// get a collection of IFilterInfo objects representing the
// filters in the graph (returns IDispatch for an object
// that supports IAMCollection
[propget]
HRESULT FilterCollection(
[out, retval] IDispatch** ppUnk);
// get a collection of IRegFilter objects representing the
// filters available in the registry
[propget]
HRESULT RegFilterCollection(
[out, retval] IDispatch** ppUnk);
HRESULT StopWhenReady();
}
// provides an event notification scheme passing events
// asynchronously to applications. See also IMediaEventSink in
// strmif.idl and sdk\h\evcodes.h.
//
// this interface behaves as if events are held on a queue. A call to
// IMediaEventSink::Notify will place an event on this queue. Calling
// GetEvent removes the first item off the queue and returns it. Items are
// returned in the order they were queued (there is no priority scheme).
// The event handle is in a signalled state iff the queue is non-empty.
//
// Apps that issue multiple Run calls without always picking up the
// completion events are advised to call GetEvent or WaitForCompletion
// (with a 0 timeout) repeatedly to remove all events from the queue
// when in stopped or paused state before each Run method.
//
// Parameters to events are actually LONG, IUnknown* or BSTR. You need to
// look at evcode.h for details of parameters to a specific event code.
// In order to correctly free resources, always call FreeEventParams
// after receiving an event.
//
[
uuid(56a868b6-0ad4-11ce-b03a-0020af0ba770),
helpstring("IMediaEvent interface"),
odl,
oleautomation,
dual
]
interface IMediaEvent : IDispatch
{
// get back the event handle. This is manual-reset
// (don't - it's reset by the event mechanism) and remains set
// when events are queued, and reset when the queue is empty.
HRESULT GetEventHandle(
[out] OAEVENT * hEvent);
// remove the next event notification from the head of the queue and
// return it. Waits up to msTimeout millisecs if there are no events.
// if a timeout occurs without any events, this method will return
// E_ABORT, and the value of the event code and other parameters
// is undefined.
//
// If this call returns successfully the caller MUST call
// FreeEventParams(lEventCode, lParam1, lParam2) to release
// resources held inside the event arguments
//
HRESULT GetEvent(
[out] long * lEventCode,
[out] LONG_PTR * lParam1,
[out] LONG_PTR * lParam2,
[in] long msTimeout
);
// Calls GetEvent repeatedly discarding events until it finds a
// completion event (EC_COMPLETE, EC_ERRORABORT, or EC_USERABORT).
// The completion event is removed from the queue and returned
// in pEvCode. Note that the object is still in running mode until
// a Pause or Stop call is made.
// If the timeout occurs, *pEvCode will be 0 and E_ABORT will be
// returned.
HRESULT WaitForCompletion(
[in] long msTimeout,
[out] long * pEvCode);
// cancels any system handling of the specified event code
// and ensures that the events are passed straight to the application
// (via GetEvent) and not handled. A good example of this is
// EC_REPAINT: default handling for this ensures the painting of the
// window and does not get posted to the app.
HRESULT CancelDefaultHandling(
[in] long lEvCode);
// restore the normal system default handling that may have been
// cancelled by CancelDefaultHandling().
HRESULT RestoreDefaultHandling( [in] long lEvCode);
// Free any resources associated with the parameters to an event.
// Event parameters may be LONGs, IUnknown* or BSTR. No action
// is taken with LONGs. IUnknown are passed addrefed and need a
// Release call. BSTR are allocated by the task allocator and will be
// freed by calling the task allocator.
HRESULT FreeEventParams(
[in] long lEvCode,
[in] LONG_PTR lParam1,
[in] LONG_PTR lParam2
);
}
[
uuid(56a868c0-0ad4-11ce-b03a-0020af0ba770),
helpstring("IMediaEventEx interface"),
odl
]
interface IMediaEventEx : IMediaEvent
{
// Register a window to send messages to when events occur
// Parameters:
//
// hwnd - handle of window to notify -
// pass NULL to stop notification
// lMsg - Message id to pass messages with
// lInstanceData - will come back in lParam
//
// The event information must still be retrived by a call
// to GetEvent when the window message is received.
//
// Multiple events may be notified with one window message.
//
HRESULT SetNotifyWindow(
[in] OAHWND hwnd,
[in] long lMsg,
[in] LONG_PTR lInstanceData
);
// Turn events notification on or off
// lNoNotify = 0x00 event notification is ON
// lNoNotify = 0x01 event notification is OFF. The
// handle returned by GetEventHandle will be signalled at
// end of stream
HRESULT SetNotifyFlags(
[in] long lNoNotifyFlags
);
HRESULT GetNotifyFlags(
[out] long *lplNoNotifyFlags
);
}
// seek/cueing for positional media
[
uuid(56a868b2-0ad4-11ce-b03a-0020af0ba770),
helpstring("IMediaPosition interface"),
odl,
oleautomation,
dual
]
interface IMediaPosition : IDispatch
{
// properties
[propget]
HRESULT Duration(
[out, retval] REFTIME* plength);
[propput]
HRESULT CurrentPosition(
[in] REFTIME llTime);
[propget]
HRESULT CurrentPosition(
[out, retval] REFTIME* pllTime);
[propget]
HRESULT StopTime(
[out, retval] REFTIME* pllTime);
[propput]
HRESULT StopTime(
[in] REFTIME llTime);
[propget]
HRESULT PrerollTime(
[out, retval] REFTIME* pllTime);
[propput]
HRESULT PrerollTime(
[in] REFTIME llTime);
[propput]
HRESULT Rate(
[in] double dRate);
[propget]
HRESULT Rate(
[out, retval] double * pdRate);
HRESULT CanSeekForward([out, retval] LONG *pCanSeekForward);
HRESULT CanSeekBackward([out, retval] LONG *pCanSeekBackward);
}
// basic audio-related functionality
[
uuid(56a868b3-0ad4-11ce-b03a-0020af0ba770),
helpstring("IBasicAudio interface"),
odl,
oleautomation,
dual
]
interface IBasicAudio : IDispatch
{
// properties
[propput]
HRESULT Volume(
[in] long lVolume);
[propget]
HRESULT Volume(
[out, retval] long * plVolume);
[propput]
HRESULT Balance(
[in] long lBalance);
[propget]
HRESULT Balance(
[out, retval] long * plBalance);
}
// basic window-related functionality
[
uuid(56a868b4-0ad4-11ce-b03a-0020af0ba770),
helpstring("IVideoWindow interface"),
odl,
oleautomation,
dual
]
interface IVideoWindow : IDispatch
{
// properties
// set and get the window title caption
[propput]
HRESULT Caption([in] BSTR strCaption);
[propget]
HRESULT Caption([out, retval] BSTR *strCaption);
// change the window styles (as per Win32)
[propput]
HRESULT WindowStyle([in] long WindowStyle);
[propget]
HRESULT WindowStyle([out, retval] long *WindowStyle);
// change the extended window styles (as per Win32)
[propput]
HRESULT WindowStyleEx([in] long WindowStyleEx);
[propget]
HRESULT WindowStyleEx([out, retval] long *WindowStyleEx);
[propput]
HRESULT AutoShow([in] long AutoShow);
[propget]
HRESULT AutoShow([out, retval] long *AutoShow);
// change the window state (as per Win32)
[propput]
HRESULT WindowState([in] long WindowState);
[propget]
HRESULT WindowState([out, retval] long *WindowState);
// realise the palette in the background
[propput]
HRESULT BackgroundPalette([in] long BackgroundPalette);
[propget]
HRESULT BackgroundPalette([out, retval] long *pBackgroundPalette);
// affect the visibility of the window
[propput]
HRESULT Visible([in] long Visible);
[propget]
HRESULT Visible([out, retval] long *pVisible);
// change the desktop position of the video window
[propput]
HRESULT Left([in] long Left);
[propget]
HRESULT Left([out, retval] long *pLeft);
[propput]
HRESULT Width([in] long Width);
[propget]
HRESULT Width([out, retval] long *pWidth);
[propput]
HRESULT Top([in] long Top);
[propget]
HRESULT Top([out, retval] long *pTop);
[propput]
HRESULT Height([in] long Height);
[propget]
HRESULT Height([out, retval] long *pHeight);
// change the owning window of the video
[propput]
HRESULT Owner([in] OAHWND Owner);
[propget]
HRESULT Owner([out, retval] OAHWND *Owner);
// change the window to receive posted messages
[propput]
HRESULT MessageDrain([in] OAHWND Drain);
[propget]
HRESULT MessageDrain([out, retval] OAHWND *Drain);
[propget]
HRESULT BorderColor([out, retval] long *Color);
[propput]
HRESULT BorderColor([in] long Color);
[propget]
HRESULT FullScreenMode([out, retval] long *FullScreenMode);
[propput]
HRESULT FullScreenMode([in] long FullScreenMode);
// methods
// ask the renderer to grab it's window the foreground
// and optionally also give the window the input focus
HRESULT SetWindowForeground([in] long Focus);
// owners should pass WM_PALETTECHANGED and WM_SYSCOLORCHANGE
// messages on the filter graph so they can be distributed
// otherwise child renderers never see these messages go by
HRESULT NotifyOwnerMessage([in] OAHWND hwnd,
[in] long uMsg,
[in] LONG_PTR wParam,
[in] LONG_PTR lParam
);
// get and set the window position on the desktop
HRESULT SetWindowPosition([in] long Left,
[in] long Top,
[in] long Width,
[in] long Height);
HRESULT GetWindowPosition([out] long *pLeft,
[out] long *pTop,
[out] long *pWidth,
[out] long *pHeight);
// get the ideal sizes for the video image playback (client) area
HRESULT GetMinIdealImageSize([out] long *pWidth,[out] long *pHeight);
HRESULT GetMaxIdealImageSize([out] long *pWidth,[out] long *pHeight);
// get the restored window size when we're maximised or iconic
HRESULT GetRestorePosition([out] long *pLeft,
[out] long *pTop,
[out] long *pWidth,
[out] long *pHeight);
// show and hide cursors useful when fullscreen
HRESULT HideCursor([in] long HideCursor);
HRESULT IsCursorHidden([out] long *CursorHidden);
}
// basic video-related functionality
[
uuid(56a868b5-0ad4-11ce-b03a-0020af0ba770),
helpstring("IBasicVideo interface"),
odl,
oleautomation,
dual
]
interface IBasicVideo : IDispatch
{
// properties
// Video specific (approximate) bit and frame rates
[propget]
HRESULT AvgTimePerFrame([out, retval] REFTIME *pAvgTimePerFrame);
[propget]
HRESULT BitRate([out, retval] long *pBitRate);
[propget]
HRESULT BitErrorRate([out, retval] long *pBitErrorRate);
// read the native video size
[propget]
HRESULT VideoWidth([out, retval] long *pVideoWidth);
[propget]
HRESULT VideoHeight([out, retval] long *pVideoHeight);
// change the source rectangle for the video
[propput]
HRESULT SourceLeft([in] long SourceLeft);
[propget]
HRESULT SourceLeft([out, retval] long *pSourceLeft);
[propput]
HRESULT SourceWidth([in] long SourceWidth);
[propget]
HRESULT SourceWidth([out, retval] long *pSourceWidth);
[propput]
HRESULT SourceTop([in] long SourceTop);
[propget]
HRESULT SourceTop([out, retval] long *pSourceTop);
[propput]
HRESULT SourceHeight([in] long SourceHeight);
[propget]
HRESULT SourceHeight([out, retval] long *pSourceHeight);
// change the destination rectangle for the video
[propput]
HRESULT DestinationLeft([in] long DestinationLeft);
[propget]
HRESULT DestinationLeft([out, retval] long *pDestinationLeft);
[propput]
HRESULT DestinationWidth([in] long DestinationWidth);
[propget]
HRESULT DestinationWidth([out, retval] long *pDestinationWidth);
[propput]
HRESULT DestinationTop([in] long DestinationTop);
[propget]
HRESULT DestinationTop([out, retval] long *pDestinationTop);
[propput]
HRESULT DestinationHeight([in] long DestinationHeight);
[propget]
HRESULT DestinationHeight([out, retval] long *pDestinationHeight);
// methods
// get and set the source rectangle position
HRESULT SetSourcePosition([in] long Left,
[in] long Top,
[in] long Width,
[in] long Height);
HRESULT GetSourcePosition([out] long *pLeft,
[out] long *pTop,
[out] long *pWidth,
[out] long *pHeight);
HRESULT SetDefaultSourcePosition();
// get and set the destination rectangle position
HRESULT SetDestinationPosition([in] long Left,
[in] long Top,
[in] long Width,
[in] long Height);
HRESULT GetDestinationPosition([out] long *pLeft,
[out] long *pTop,
[out] long *pWidth,
[out] long *pHeight);
HRESULT SetDefaultDestinationPosition();
// get the native video dimensions
HRESULT GetVideoSize([out] long *pWidth,[out] long *pHeight);
// get all or some of the current video palette
HRESULT GetVideoPaletteEntries([in] long StartIndex,
[in] long Entries,
[out] long *pRetrieved,
[out] long *pPalette);
HRESULT GetCurrentImage([in,out] long *pBufferSize,
[out] long *pDIBImage);
// are we using a default source or destination
HRESULT IsUsingDefaultSource();
HRESULT IsUsingDefaultDestination();
}
// interface extension to IBasicVideo to return preferred aspect ratio
[
uuid(329bb360-f6ea-11d1-9038-00a0c9697298),
helpstring("IBasicVideo2"),
odl
]
interface IBasicVideo2 : IBasicVideo
{
// This may not match the native video dimensions because of
// non-square pixels or whatever.
// The video may not always be displayed in the preferred
// aspect ratio for performance reasons
HRESULT GetPreferredAspectRatio([out] long *plAspectX,
[out] long *plAspectY);
}
// interface returned to a command that has been queued via IQueueCommand
[
uuid(56a868b8-0ad4-11ce-b03a-0020af0ba770),
helpstring("IDeferredCommand"),
odl
]
interface IDeferredCommand : IUnknown
{
HRESULT Cancel();
HRESULT Confidence(
[out] LONG* pConfidence);
HRESULT Postpone(
[in] REFTIME newtime);
// return value is S_OK if completed. phrResult is set to the
// result of the deferred command.
HRESULT GetHResult(
[out] HRESULT* phrResult);
};
// queue an IDispatch-based command for execution at a specified time
[
uuid(56a868b7-0ad4-11ce-b03a-0020af0ba770),
helpstring("IQueueCommand"),
odl
]
interface IQueueCommand : IUnknown
{
HRESULT InvokeAtStreamTime(
[out] IDeferredCommand** pCmd,
[in] REFTIME time, // at this streamtime
[in] GUID* iid, // call this interface
[in] long dispidMethod, // ..and this method
[in] short wFlags, // method/property
[in] long cArgs, // count of args
[in] VARIANT* pDispParams, // actual args
[in, out] VARIANT* pvarResult, // return value
[out] short* puArgErr // which arg in error
);
HRESULT InvokeAtPresentationTime(
[out] IDeferredCommand** pCmd,
[in] REFTIME time, // at this presentation time
[in] GUID* iid, // call this interface
[in] long dispidMethod, // ..and this method
[in] short wFlags, // method/property
[in] long cArgs, // count of args
[in] VARIANT* pDispParams, // actual args
[in, out] VARIANT* pvarResult, // return value
[out] short* puArgErr // which arg in error
);
};
// the filgraph object (CLSID_Filgraph)
[
uuid(e436ebb3-524f-11ce-9f53-0020af0ba770),
helpstring("Filtergraph type info")
]
coclass FilgraphManager
{
[default] interface IMediaControl;
interface IMediaEvent;
interface IMediaPosition;
interface IBasicAudio;
interface IBasicVideo;
interface IVideoWindow;
};
// represents a filter (you can't QI for IBaseFilter from this object)
[
uuid(56a868ba-0ad4-11ce-b03a-0020af0ba770),
helpstring("FilterInfo"),
odl,
oleautomation,
dual
]
interface IFilterInfo : IDispatch
{
// find a pin given an id - returns an object supporting
// IPinInfo
HRESULT FindPin(
[in] BSTR strPinID,
[out] IDispatch** ppUnk);
// filter name
[propget]
HRESULT Name(
[out, retval] BSTR* strName);
// Vendor info string
[propget]
HRESULT VendorInfo(
[out, retval] BSTR* strVendorInfo);
// returns the actual filter object (supports IBaseFilter)
[propget]
HRESULT Filter(
[out, retval] IUnknown **ppUnk);
// returns an IAMCollection object containing the PinInfo objects
// for this filter
[propget]
HRESULT Pins(
[out, retval] IDispatch ** ppUnk);
// returns -1 if true or 0 if false (OATRUE/FALSE)
[propget]
HRESULT IsFileSource(
[out, retval] LONG * pbIsSource);
[propget]
HRESULT Filename(
[out, retval] BSTR* pstrFilename);
[propput]
HRESULT Filename(
[in] BSTR strFilename);
}
[
uuid(56a868bb-0ad4-11ce-b03a-0020af0ba770),
helpstring("Registry Filter Info"),
odl,
oleautomation,
dual
]
interface IRegFilterInfo : IDispatch
{
// get the name of this filter
[propget]
HRESULT Name(
[out, retval] BSTR* strName);
// make an instance of this filter, add it to the graph and
// return an IFilterInfo for it.
HRESULT Filter(
[out] IDispatch** ppUnk);
}
// wrapper for a media type
[
uuid(56a868bc-0ad4-11ce-b03a-0020af0ba770),
helpstring("Media Type"),
odl,
oleautomation,
dual
]
interface IMediaTypeInfo : IDispatch
{
// get the major type GUID as a string
[propget]
HRESULT Type(
[out, retval] BSTR* strType);
// get the subtype GUID as a string
[propget]
HRESULT Subtype(
[out, retval] BSTR* strType);
}
[
uuid(56a868bd-0ad4-11ce-b03a-0020af0ba770),
helpstring("Pin Info"),
odl,
oleautomation,
dual
]
interface IPinInfo : IDispatch
{
// get the pin object (IUnknown for an object that
// supports IPin
[propget]
HRESULT Pin(
[out, retval] IUnknown** ppUnk);
// get the PinInfo object for the pin we are connected to
[propget]
HRESULT ConnectedTo(
[out, retval] IDispatch** ppUnk);
// get the media type on this connection - returns an
// object supporting IMediaTypeInfo
[propget]
HRESULT ConnectionMediaType(
[out, retval] IDispatch** ppUnk);
// return the FilterInfo object for the filter this pin
// is part of
[propget]
HRESULT FilterInfo(
[out, retval] IDispatch** ppUnk);
// get the name of this pin
[propget]
HRESULT Name(
[out, retval] BSTR* ppUnk);
// pin direction
[propget]
HRESULT Direction(
[out, retval] LONG *ppDirection);
// PinID - can pass to IFilterInfo::FindPin
[propget]
HRESULT PinID(
[out, retval] BSTR* strPinID);
// collection of preferred media types (IAMCollection)
[propget]
HRESULT MediaTypes(
[out, retval] IDispatch** ppUnk);
// Connect to the following pin, using other transform
// filters as necessary. pPin can support either IPin or IPinInfo
HRESULT Connect(
[in] IUnknown* pPin);
// Connect directly to the following pin, not using any intermediate
// filters
HRESULT ConnectDirect(
[in] IUnknown* pPin);
// Connect directly to the following pin, using the specified
// media type only. pPin is an object that must support either
// IPin or IPinInfo, and pMediaType must support IMediaTypeInfo.
HRESULT ConnectWithType(
[in] IUnknown * pPin,
[in] IDispatch * pMediaType);
// disconnect this pin and the corresponding connected pin from
// each other. (Calls IPin::Disconnect on both pins).
HRESULT Disconnect(void);
// render this pin using any necessary transform and rendering filters
HRESULT Render(void);
}
//--------------------------------------------------------------------
//
// IAMStats - statistics
//
// Note that the calls using an index are likely to be much faster
//--------------------------------------------------------------------
[
uuid(bc9bcf80-dcd2-11d2-abf6-00a0c905f375),
helpstring("Statistics"),
odl,
oleautomation,
dual
]
interface IAMStats : IDispatch {
// Reset all stats
HRESULT Reset();
// Get number of stats collected
[propget]
HRESULT Count(
[out, retval] LONG* plCount);
// Pull out a specific value by position
HRESULT GetValueByIndex([in] long lIndex,
[out] BSTR *szName,
[out] long *lCount,
[out] double *dLast,
[out] double *dAverage,
[out] double *dStdDev,
[out] double *dMin,
[out] double *dMax);
// Pull out a specific value by name
HRESULT GetValueByName([in] BSTR szName,
[out] long *lIndex,
[out] long *lCount,
[out] double *dLast,
[out] double *dAverage,
[out] double *dStdDev,
[out] double *dMin,
[out] double *dMax);
// The calls below are for generators of statistics
// Return the index for a string - optinally create
HRESULT GetIndex([in] BSTR szName,
[in] long lCreate,
[out] long *plIndex);
// Add a new value
HRESULT AddValue([in] long lIndex,
[in] double dValue);
}
};

View File

@ -0,0 +1,86 @@
//------------------------------------------------------------------------------
// File: DDStream.idl
//
// Desc: Used by MIDL tool to generate ddstream.h
//
// Copyright (c) 1998-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "mmstream.idl";
cpp_quote("//")
cpp_quote("// The following declarations within the 'if 0' block are dummy typedefs used to make")
cpp_quote("// the ddstream.idl file build. The actual definitions are contained in DDRAW.H")
cpp_quote("//")
cpp_quote("#if 0")
typedef void * LPDDSURFACEDESC;
typedef struct tDDSURFACEDESC DDSURFACEDESC;
cpp_quote("#endif")
cpp_quote("#include <ddraw.h>")
enum {
DDSFF_PROGRESSIVERENDER = 0x00000001
};
interface IDirectDraw;
interface IDirectDrawSurface;
interface IDirectDrawPalette;
interface IDirectDrawMediaStream;
interface IDirectDrawStreamSample;
// IDirectDrawMediaStream
[
object,
local,
uuid(F4104FCE-9A70-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IDirectDrawMediaStream : IMediaStream
{
HRESULT GetFormat(
[out] DDSURFACEDESC *pDDSDCurrent,
[out] IDirectDrawPalette **ppDirectDrawPalette,
[out] DDSURFACEDESC *pDDSDDesired,
[out] DWORD *pdwFlags);
HRESULT SetFormat(
[in] const DDSURFACEDESC *pDDSurfaceDesc,
[in] IDirectDrawPalette *pDirectDrawPalette);
HRESULT GetDirectDraw(
[out] IDirectDraw **ppDirectDraw);
HRESULT SetDirectDraw(
[in] IDirectDraw *pDirectDraw);
HRESULT CreateSample(
[in] IDirectDrawSurface *pSurface,
[in] const RECT *pRect,
[in] DWORD dwFlags,
[out]IDirectDrawStreamSample **ppSample);
HRESULT GetTimePerFrame(
[out] STREAM_TIME *pFrameTime);
};
// IDirectDrawStreamSample
[
object,
local,
uuid(F4104FCF-9A70-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IDirectDrawStreamSample : IStreamSample
{
HRESULT GetSurface(
[out] IDirectDrawSurface ** ppDirectDrawSurface,
[out] RECT * pRect);
HRESULT SetRect(
[in] const RECT * pRect);
};

View File

@ -0,0 +1,38 @@
//------------------------------------------------------------------------------
// File: DevEnum.idl
//
// Desc: IDL source for devenum.dll. This file will be processed by the
// MIDL tool to produce the type library (devenum.tlb) and marshalling
// code.
//
// Copyright (c) 1998 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
cpp_quote("#define CDEF_CLASS_DEFAULT 0x0001")
cpp_quote("#define CDEF_BYPASS_CLASS_MANAGER 0x0002")
//cpp_quote("#define CDEF_CLASS_LEGACY 0x0004")
cpp_quote("#define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008")
// if any of these flags are set, then only the types specified by the
// flags are enumerated
cpp_quote("#define CDEF_DEVMON_CMGR_DEVICE 0x0010")
cpp_quote("#define CDEF_DEVMON_DMO 0x0020")
cpp_quote("#define CDEF_DEVMON_PNP_DEVICE 0x0040")
cpp_quote("#define CDEF_DEVMON_FILTER 0x0080")
cpp_quote("#define CDEF_DEVMON_SELECTIVE_MASK 0x00f0")
[
object,
uuid(29840822-5B84-11D0-BD3B-00A0C911CE86),
pointer_default(unique)
]
interface ICreateDevEnum : IUnknown
{
import "oaidl.idl";
HRESULT CreateClassEnumerator(
[in] REFCLSID clsidDeviceClass,
[out] IEnumMoniker ** ppEnumMoniker,
[in] DWORD dwFlags);
}

View File

@ -0,0 +1,33 @@
//------------------------------------------------------------------------------
// File: DMODShow.idl
//
// Desc: This file will be processed by the MIDL tool to
// produce dmodshow.h and proxy-stub code.
//
// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "objidl.idl";
import "mediaobj.idl";
// 94297043-bd82-4dfd-b0de-8177739c6d20
cpp_quote("DEFINE_GUID(CLSID_DMOWrapperFilter, 0x94297043,0xbd82,0x4dfd,0xb0,0xde,0x81,0x77,0x73,0x9c,0x6d,0x20);")
// bcd5796c-bd52-4d30-ab76-70f975b89199
cpp_quote("DEFINE_GUID(CLSID_DMOFilterCategory,0xbcd5796c,0xbd52,0x4d30,0xab,0x76,0x70,0xf9,0x75,0xb8,0x91,0x99);")
[
object,
uuid(52d6f586-9f0f-4824-8fc8-e32ca04930c2),
]
interface IDMOWrapperFilter : IUnknown
{
// Init is passed in the clsid (so it can call CoCreateInstance)
// and the catgory under which the DMO lives.
// Note that catDMO can be CLSID_NULL, in which case no special
// category-specific processing will be invoked in the wrapper filter.
HRESULT Init(REFCLSID clsidDMO, REFCLSID catDMO);
}

View File

@ -0,0 +1,59 @@
//------------------------------------------------------------------------------
// File: DShowASF.idl
//
// Desc:
//
// Copyright (c) 1992-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "objidl.idl";
import "strmif.idl"; // for media type and time definitions
import "wmsdkidl.idl";
cpp_quote( "EXTERN_GUID( IID_IConfigAsfWriter,0x45086030,0xF7E4,0x486a,0xB5,0x04,0x82,0x6B,0xB5,0x79,0x2A,0x3B );" )
interface IConfigAsfWriter;
interface IWMProfile;
// Interface to control the ASF writer
[
object,
uuid(45086030-F7E4-486a-B504-826BB5792A3B),
pointer_default(unique)
]
interface IConfigAsfWriter : IUnknown
{
//
// The user is expected to enumerate profiles using the wmsdk IWMProfileManager
// method and then pass the desired profile index to the ASF Writer filter via this
// method. The filter will then try to configure itself for the selected profile.
//
// NOTE: These 2 XXXProfileId methods are now obsolete because they assume
// version 4.0 WMSDK profiles. To configure the filter for later profile
// versions using a profile index, use the XXXProfile methods which take
// the IWMProfile* directly.
//
HRESULT ConfigureFilterUsingProfileId([in] DWORD dwProfileId);
HRESULT GetCurrentProfileId([out] DWORD *pdwProfileId);
//
// configure using a pre-defined wmsdk profile guid
//
HRESULT ConfigureFilterUsingProfileGuid([in] REFGUID guidProfile);
HRESULT GetCurrentProfileGuid([out] GUID *pProfileGuid);
//
// Use these methods when a custom profile setup is preferred
//
HRESULT ConfigureFilterUsingProfile([in] IWMProfile * pProfile);
HRESULT GetCurrentProfile([out] IWMProfile **ppProfile);
//
// allow app to control whether or not to index file
//
HRESULT SetIndexMode( [in] BOOL bIndexFile );
HRESULT GetIndexMode( [out] BOOL *pbIndexFile );
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,318 @@
//------------------------------------------------------------------------------
// File: DynGraph.idl
//
// Desc: Dynamic graph interfaces
//
// Copyright (c) 1999-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
interface IPinConnection;
interface IPinFlowControl;
interface IGraphConfig;
interface IGraphConfigCallback;
//--------------------------------------------------------------------
//
// IPinConnection - supported by input pins
//
//--------------------------------------------------------------------
[
local,
object,
uuid(4a9a62d3-27d4-403d-91e9-89f540e55534),
pointer_default(unique)
]
interface IPinConnection : IUnknown {
// Do you accept this type chane in your current state?
HRESULT DynamicQueryAccept([in] const AM_MEDIA_TYPE *pmt);
// Set event when EndOfStream receive - do NOT pass it on
// This condition is cancelled by a flush or Stop
HRESULT NotifyEndOfStream([in] HANDLE hNotifyEvent);
// Are you an 'end pin'
HRESULT IsEndPin();
HRESULT DynamicDisconnect();
};
//--------------------------------------------------------------------
//
// IPinFlowControl - supported by output pins
//
//--------------------------------------------------------------------
[
local,
object,
uuid(c56e9858-dbf3-4f6b-8119-384af2060deb),
pointer_default(unique)
]
interface IPinFlowControl : IUnknown {
// Block processing on this pin
HRESULT Block([in] DWORD dwBlockFlags, [in] HANDLE hEvent);
}
// block flags
enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS {
AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001, // 0 means unblock
};
// Reconnect flags
typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS {
AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001,
AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002,
AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004
} AM_GRAPH_CONFIG_RECONNECT_FLAGS;
// RemoveFilterEx flags
enum _REM_FILTER_FLAGS {
REMFILTERF_LEAVECONNECTED = 0x00000001
};
typedef enum _AM_FILTER_FLAGS {
AM_FILTER_FLAGS_REMOVABLE = 0x00000001
} AM_FILTER_FLAGS;
//--------------------------------------------------------------------
//
// IGraphConfig
//
//--------------------------------------------------------------------
[
local,
object,
uuid(03A1EB8E-32BF-4245-8502-114D08A9CB88),
pointer_default(unique)
]
interface IGraphConfig : IUnknown {
HRESULT Reconnect([in] IPin *pOutputPin,
[in] IPin *pInputPin,
[in] const AM_MEDIA_TYPE *pmtFirstConnection,
[in] IBaseFilter *pUsingFilter, // can be NULL
[in] HANDLE hAbortEvent,
[in] DWORD dwFlags);
HRESULT Reconfigure([in] IGraphConfigCallback *pCallback,
[in] PVOID pvContext,
[in] DWORD dwFlags,
[in] HANDLE hAbortEvent);
HRESULT AddFilterToCache([in] IBaseFilter *pFilter);
HRESULT EnumCacheFilter([out] IEnumFilters **pEnum);
HRESULT RemoveFilterFromCache([in]IBaseFilter *pFilter);
// Get the start time associated with the last Run() call
// If the graph is not running returns VFW_E_WRONG_STATE
HRESULT GetStartTime([out] REFERENCE_TIME *prtStart);
HRESULT PushThroughData(
[in] IPin *pOutputPin,
[in] IPinConnection *pConnection,
[in] HANDLE hEventAbort);
HRESULT SetFilterFlags([in] IBaseFilter *pFilter, [in] DWORD dwFlags);
HRESULT GetFilterFlags([in] IBaseFilter *pFilter, [out] DWORD *pdwFlags);
HRESULT RemoveFilterEx( [in] IBaseFilter *pFilter, DWORD Flags );
}
//--------------------------------------------------------------------
//
// IGraphConfigCallback
//
//--------------------------------------------------------------------
[
local,
object,
uuid(ade0fd60-d19d-11d2-abf6-00a0c905f375),
pointer_default(unique)
]
interface IGraphConfigCallback : IUnknown
{
HRESULT Reconfigure(PVOID pvContext, DWORD dwFlags);
}
// Filter Chain Definition
//
// Filter chains have the following properties:
//
// - Each filter chain has one or more filters.
//
// - Each filter in a filter chain has at most one connected input pin and one
// connected output pin. For example, filters A, C, D, F, G, H, I, J and K
// (see the diagram below) can be in a filter chain because each one has at
// most one connected input pin and one connected output pin.
//
// - Any filter in a chain is reachable by any other filter in the chain.
// For example, in the filter chain F-G-H, F can reach H by following the F-
// G connection to G and then following the G-H connection to H. Filters F
// and J cannot be in the same filter chain because J is not reachable from
// F. Anotherwords, there no sequence of connected filters between F and J.
//
// - The start filter is the only filter in the filter chain who's input
// pin is not connected to another filter in the chain. For instance, F is
// the start filter in F-G-H because F's input pin is connected to E and E
// is not in the filter chain. G's input pin is connected to F and H's is
// connected to G. Both F and G are in the filter chain.
//
// - The end filter is the only filter in the filter chain who's output pin
// is not connected to another filter in the chain. For example, in the
// filter chain J-K, K is the end filter because K's output pin is
// connected to L. J's output pin is connected to K and K is in the J-K
// filter chain.
//
//
// --->|---| |---|--->
// | C |--->| D |
// |---| |---|--->|---| |---|--->|---| |---| |---| |---|
// | A |--->| B | | E |--->| F |--->| G |--->| H |
// |---| |---|--->|---|------------>|---| |---| |---| |---|
// | I |--->
// --->|---|--->
//
// |---| |---| |---|
// | J |--->| K |--->| L |
// |---| |---| |---|
//
// Example Filter Graph
//
//
//
// IFilterChain Methods Documentation
//
// HRESULT StartChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
//
// StartChain() switches all the filters in the chain into the running state
// If one of the filters will not switch to the running state, then all the filters
// in the chain are stopped. This method can only be called if the filter graph is
// running.
//
// Parameters:
// - pStartFilter [in]
// The first filter in the filter chain. Note that this can be the same
// filter as pEndFilter .
//
// - pEndFilter [in]
// The last filter in the filter chain. Note that this can be the same
// filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
// from pStartFilter to the last downstream filter which can be in a filter chain.
// For example, IFilterChain::StartChain( A, NULL ) would start filter A.
// IFilterChain::StartChain( G, NULL ) would start filters G and H.
// IFilterChain::StartChain( C, NULL ) would start filters C and D. Finally,
// IFilterChain::StartChain( E, NULL ) would fail because E cannot be in a
// filter chain (see the Filter Chain Definition section for more information).
//
// Return Value:
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
// information on interpreting HRESULTs.
//
//
//
//
// HRESULT PauseChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
//
// PauseChain() switches all the filters in a chain to the paused state. If it cannot
// switch one of the filtres into the paused state, all the filters in the chain are
// stopped. This method can only be called if the filter graph is paused.
//
// Parameters:
// - pStartFilter [in]
// The first filter in the filter chain. Note that this can be the same
// filter as pEndFilter .
//
// - pEndFilter [in]
// The last filter in the filter chain. Note that this can be the same
// filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
// from pStartFilter to the last downstream filter which can be in a filter chain.
// For example, IFilterChain::StopChain( A, NULL ) would stop filter A.
// IFilterChain::StopChain( G, NULL ) would stop filters G and H.
// IFilterChain::StopChain( C, NULL ) would stop filters C and D. Finally,
// IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter
// chain (see the Filter Chain Definition section for more information).
//
//
// Return Value:
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
// information on interpreting HRESULTs.
//
//
//
// HRESULT StopChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
//
// StopChain() switches all the filters in chain to the stopped state.
//
// Parameters:
// - pStartFilter [in]
// The first filter in the filter chain. Note that this can be the same
// filter as pEndFilter .
//
// - pEndFilter [in]
// The last filter in the filter chain. Note that this can be the same
// filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
// from pStartFilter to the last downstream filter which can be in a filter chain.
// For example, IFilterChain::StopChain( A, NULL ) would stop filter A.
// IFilterChain::StopChain( G, NULL ) would stop filters G and H.
// IFilterChain::StopChain( C, NULL ) would stop filters C and D. Finally,
// IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter
// chain (see the Filter Chain Definition section for more information).
//
//
// Return Value:
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
// information on interpreting HRESULTs.
//
//
//
//
//
// HRESULT RemoveChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
//
// RemoveChain() removes every filter in a chain from the filter graph.
// The filters can be removed while the graph is running.
//
// Parameters:
// - pStartFilter [in]
// The first filter in the filter chain. Note that this can be the same
// filter as pEndFilter .
//
// - pEndFilter [in]
// The last filter in the filter chain. Note that this can be the same
// filter as pStartFilter. If pEndFilter is NULL then the filter chain
// extends from pStartFilter to the last downstream filter which can be in a
// filter chain. For example, IFilterChain::RemoveChain( A, NULL ) would remove
// filter A from the filter graph. IFilterChain::RemoveChain( G, NULL ) would
// remove filters G and H. IFilterChain::RemoveChain( C, NULL ) would remove
// filters C and D. Finally, IFilterChain::RemoveChain( E, NULL ) would fail
// because E cannot be in a filter chain (see the Filter Chain Definition
// section for more information).
//
//
// Return Value:
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
// information on interpreting HRESULTs.
//
//
[
local,
object,
uuid(DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29),
pointer_default(unique)
]
interface IFilterChain : IUnknown
{
HRESULT StartChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
HRESULT PauseChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
HRESULT StopChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
HRESULT RemoveChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
}

View File

@ -0,0 +1,411 @@
//------------------------------------------------------------------------------
// File: MediaObj.idl
//
// Desc: Define the interfaces for DirectX Media Objects. This file will be
// processed by the MIDL tool to produce mediaobj.h and proxy-stub code.
//
// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
import "objidl.idl";
// DMO_MEDIA_TYPE structure
cpp_quote("#ifdef __strmif_h__")
cpp_quote("typedef AM_MEDIA_TYPE DMO_MEDIA_TYPE;")
cpp_quote("#else")
typedef struct _DMOMediaType {
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
[size_is(cbFormat)] BYTE * pbFormat;
} DMO_MEDIA_TYPE;
typedef LONGLONG REFERENCE_TIME;
cpp_quote("#endif")
// Per-buffer flags that apply to input buffers
enum _DMO_INPUT_DATA_BUFFER_FLAGS {
DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x00000001,
DMO_INPUT_DATA_BUFFERF_TIME = 0x00000002,
DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x00000004
};
// Per-buffer flags that apply to output buffers.
enum _DMO_OUTPUT_DATA_BUFFER_FLAGS {
DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x00000001,
DMO_OUTPUT_DATA_BUFFERF_TIME = 0x00000002,
DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x00000004,
//
// This flag means the object could have generated more data for this
// output stream, even with no additional input from any input stream,
// but the output buffer did not have sufficient room.
//
DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x01000000
};
// Flags returned by GetInputStatus()
enum _DMO_INPUT_STATUS_FLAGS {
//
// ACCEPT_DATA indicates that the input stream is ready to accept
// new data via ProcessInput().
//
DMO_INPUT_STATUSF_ACCEPT_DATA = 0x00000001
};
// Flags returned by GetInputStreamInfo()
enum _DMO_INPUT_STREAM_INFO_FLAGS {
DMO_INPUT_STREAMF_WHOLE_SAMPLES = 0x00000001,
DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x00000002,
DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x00000004,
DMO_INPUT_STREAMF_HOLDS_BUFFERS = 0x00000008
};
// Flags returned by GetOutputStreamInfo()
enum _DMO_OUTPUT_STREAM_INFO_FLAGS {
DMO_OUTPUT_STREAMF_WHOLE_SAMPLES = 0x00000001,
DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x00000002,
DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x00000004,
DMO_OUTPUT_STREAMF_DISCARDABLE = 0x00000008,
DMO_OUTPUT_STREAMF_OPTIONAL = 0x00000010
};
// SetType flags
enum _DMO_SET_TYPE_FLAGS {
DMO_SET_TYPEF_TEST_ONLY = 0x00000001,// check but don't set
DMO_SET_TYPEF_CLEAR = 0x00000002 // unset
};
// Process Output Flags
enum _DMO_PROCESS_OUTPUT_FLAGS {
DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x00000001 // Discard
};
// Buffer wrapper interface
[
object,
uuid(59eff8b9-938c-4a26-82f2-95cb84cdc837)
]
interface IMediaBuffer : IUnknown
{
HRESULT SetLength(
DWORD cbLength
);
HRESULT GetMaxLength(
[out] DWORD *pcbMaxLength
);
HRESULT GetBufferAndLength(
[out] BYTE **ppBuffer, // not filled if NULL
[out] DWORD *pcbLength // not filled if NULL
);
}
//
// Output buffer info structure: one of these must be passed in for each
// output stream with every ProcessOutput() call
// All [out] fields should be
// assumed undefined if ProcessOutput() failed
//
typedef struct _DMO_OUTPUT_DATA_BUFFER {
IMediaBuffer *pBuffer; // [in] can be NULL
// ProcessOutput() must set any appropriate flags and zero out the rest.
DWORD dwStatus; // [out] DMO_OUTPUT_DATA_BUFFERF_XXX (INCOMPLETE, etc.)
//
// Each of these is valid if the corresponding flag is set in dwStatus
//
REFERENCE_TIME rtTimestamp; // [out]
REFERENCE_TIME rtTimelength; // [out]
} DMO_OUTPUT_DATA_BUFFER, *PDMO_OUTPUT_DATA_BUFFER;
// Interface supported by media objects
[
object,
uuid(d8ad0f58-5494-4102-97c5-ec798e59bcf4)
]
interface IMediaObject : IUnknown
{
//
// Stream enumeration
//
HRESULT GetStreamCount(
[out] DWORD *pcInputStreams,
[out] DWORD *pcOutputStreams
);
HRESULT GetInputStreamInfo(
DWORD dwInputStreamIndex, // 0-based
[out] DWORD *pdwFlags // HOLDS_BUFFERS
);
HRESULT GetOutputStreamInfo(
DWORD dwOutputStreamIndex, // 0-based
[out] DWORD *pdwFlags // Media object sets to 0
);
//
// Mediatypes
//
//
// GetType - iterate through media types supported by a stream.
// Returns S_FALSE if the type index is out of range ("no more types").
//
HRESULT GetInputType(
DWORD dwInputStreamIndex,
DWORD dwTypeIndex, // 0-based
[out] DMO_MEDIA_TYPE *pmt
);
HRESULT GetOutputType(
DWORD dwOutputStreamIndex,
DWORD dwTypeIndex, // 0-based
[out] DMO_MEDIA_TYPE *pmt
);
//
// SetType - tell the object the type of data it will work with.
//
HRESULT SetInputType(
DWORD dwInputStreamIndex,
[in] const DMO_MEDIA_TYPE *pmt,
DWORD dwFlags // test only
);
HRESULT SetOutputType(
DWORD dwOutputStreamIndex,
[in] const DMO_MEDIA_TYPE *pmt,
DWORD dwFlags // test only
);
//
// GetCurrentType - get the last mediatype supplied via SetType.
// Returns S_FALSE if SetType has not been called.
//
HRESULT GetInputCurrentType(
DWORD dwInputStreamIndex,
[out] DMO_MEDIA_TYPE *pmt
);
HRESULT GetOutputCurrentType(
DWORD dwOutputStreamIndex,
[out] DMO_MEDIA_TYPE *pmt
);
//
// SizeInfo
//
//
// GetSizeInfo - Get buffer size requirementes of a stream.
//
// If buffer size depends on the media type used, the object should
// base its response on the most recent media type set for this stream.
// If no mediatype has been set, the object may return an error.
//
HRESULT GetInputSizeInfo(
DWORD dwInputStreamIndex,
[out] DWORD *pcbSize, // size of input 'quantum'
[out] DWORD *pcbMaxLookahead, // max total bytes held
[out] DWORD *pcbAlignment // buffer alignment requirement
);
HRESULT GetOutputSizeInfo(
DWORD dwOutputStreamIndex,
[out] DWORD *pcbSize, // size of output 'quantum'
[out] DWORD *pcbAlignment // buffer alignment requirement
);
//
// Latency methods
//
HRESULT GetInputMaxLatency(
DWORD dwInputStreamIndex,
[out] REFERENCE_TIME *prtMaxLatency
);
HRESULT SetInputMaxLatency(
DWORD dwInputStreamIndex,
REFERENCE_TIME rtMaxLatency
);
//
// Streaming / state methods
//
//
// Flush() - discard any buffered data.
//
HRESULT Flush();
//
// Send a discontinuity to an input stream. The object will not
// accept any more data on this input stream until the discontinuity
// has been completely processed, which may involve multiple
// ProcessOutput() calls.
//
HRESULT Discontinuity(DWORD dwInputStreamIndex);
//
// If a streaming object needs to perform any time consuming
// initialization before it can stream data, it should do it inside
// AllocateStreamingResources() rather than during the first process
// call.
//
// This method is NOT guaranteed to be called before streaming
// starts. If it is not called, the object should perform any
// required initialization during a process call.
//
HRESULT AllocateStreamingResources();
// Free anything allocated in AllocateStreamingResources().
HRESULT FreeStreamingResources();
// GetInputStatus - the only flag defined right now is ACCEPT_DATA.
HRESULT GetInputStatus(
DWORD dwInputStreamIndex,
[out] DWORD *dwFlags // ACCEPT_DATA
);
//
// Pass one new buffer to an input stream
//
HRESULT ProcessInput(
DWORD dwInputStreamIndex,
IMediaBuffer *pBuffer, // must not be NULL
DWORD dwFlags, // DMO_INPUT_DATA_BUFFERF_XXX (syncpoint, etc.)
REFERENCE_TIME rtTimestamp, // valid if flag set
REFERENCE_TIME rtTimelength // valid if flag set
);
//
// ProcessOutput() - generate output for current input buffers
//
// Output stream specific status information is returned in the
// dwStatus member of each buffer wrapper structure.
//
HRESULT ProcessOutput(
DWORD dwFlags, // DMO_PROCESS_OUTPUT_FLAGS
DWORD cOutputBufferCount, // # returned by GetStreamCount()
[in,out,size_is(cOutputBufferCount)]
DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, // one per stream
[out] DWORD *pdwStatus // TBD, must be set to 0
);
// Locking - lock if bLock is TRUE, otherwise unlock
HRESULT Lock(LONG bLock);
};
//
// Interface returned by the DMO enumeration API
//
[
object,
uuid(2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f)
]
interface IEnumDMO : IUnknown {
HRESULT Next(
DWORD cItemsToFetch,
[out, size_is(cItemsToFetch), length_is(*pcItemsFetched)] CLSID *pCLSID,
[out, size_is(cItemsToFetch), length_is(*pcItemsFetched), string] WCHAR **Names,
[out] DWORD *pcItemsFetched
);
HRESULT Skip(
DWORD cItemsToSkip
);
HRESULT Reset(void);
HRESULT Clone(
[out] IEnumDMO **ppEnum
);
}
// Flags for IMediaObjectInPlace::Process
enum _DMO_INPLACE_PROCESS_FLAGS {
DMO_INPLACE_NORMAL = 0x00000000,
DMO_INPLACE_ZERO = 0x00000001
};
[
object,
uuid(651b9ad0-0fc7-4aa9-9538-d89931010741)
]
interface IMediaObjectInPlace : IUnknown {
// Proces - Given a buffer of size ulSize, put the output
// of the DMO into the same buffer.
HRESULT Process(
[in] ULONG ulSize,
[in,out,size_is(ulSize)] BYTE* pData,
[in] REFERENCE_TIME refTimeStart,
[in] DWORD dwFlags
);
// Create a copy of the In-Place Media Object. This allows
// for very fast initialization of a number of In-Place objects
// in a known state.
HRESULT Clone(
[out] IMediaObjectInPlace **ppMediaObject
);
// GetLatency - Returns a REFERENCE_TIME value
// (1 tick = 100ns) which corresponds to the latency time
// processing this effect will add to the graph. This assumes
// the effect cost per buffer is a constant.
HRESULT GetLatency(
[out] REFERENCE_TIME *pLatencyTime
);
}
// Quality control status flags
enum _DMO_QUALITY_STATUS_FLAGS {
DMO_QUALITY_STATUS_ENABLED = 0x00000001
};
[
object,
uuid(65abea96-cf36-453f-af8a-705e98f16260)
]
interface IDMOQualityControl : IUnknown {
HRESULT SetNow(
[in] REFERENCE_TIME rtNow
);
HRESULT SetStatus(
[in] DWORD dwFlags
);
HRESULT GetStatus(
[out] DWORD *pdwFlags
);
}
// Flags for IVideoOutputOptimizations
enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS {
DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x00000001
};
[
object,
uuid(be8f4f4e-5b16-4d29-b350-7f6b5d9298ac)
]
interface IDMOVideoOutputOptimizations : IUnknown {
HRESULT QueryOperationModePreferences (
ULONG ulOutputStreamIndex,
DWORD *pdwRequestedCapabilities
);
HRESULT SetOperationMode (
ULONG ulOutputStreamIndex,
DWORD dwEnabledFeatures
);
HRESULT GetCurrentOperationMode (
ULONG ulOutputStreamIndex,
DWORD *pdwEnabledFeatures
);
HRESULT GetCurrentSampleRequirements (
ULONG ulOutputStreamIndex,
DWORD *pdwRequestedFeatures
);
}

View File

@ -0,0 +1,228 @@
//------------------------------------------------------------------------------
// File: MedParam.idl
//
// Desc: Definition of the IMediaParams and associated interfaces. These
// interfaces are designed to allow communication of curve-following
// behaviors for parameters of objects which require dynamic changes
// to their parameters at run time. All changes are specified by
// timestamp and curve type to ensure the parameters can be set
// at sufficient accuracy with predictable behavior on subsequent
// playback of the same curves.
//
// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "oaidl.idl";
import "ocidl.idl";
import "strmif.idl";
//------------------------------------------------------------------------------
// Define the semantic type to be used for each parameter. All values passed
// into this interface are 32-bit floats, but the interface can specify that
// the values must be integer, booleans, or enumerated types
//------------------------------------------------------------------------------
typedef float MP_DATA; // All data is 32-bit floats
typedef enum _MP_Type {
MPT_INT, // data is signed 23 bit integer (mantissa)
MPT_FLOAT, // data is 32bit IEEE float
MPT_BOOL, // data is true or false (using ANSI C++ definition)
MPT_ENUM, // data is a set (represented by consecutive integers)
MPT_MAX,
} MP_TYPE;
const MP_DATA MPBOOL_TRUE = 1.0; // Value of true
const MP_DATA MPBOOL_FALSE = 0.0; // Value of false
//------------------------------------------------------------------------------
// Define the types of curves which are supported
//------------------------------------------------------------------------------
typedef enum _MP_CURVE_TYPE {
MP_CURVE_JUMP = 0x0001, // No interpolation, just jump to next point
MP_CURVE_LINEAR = 0x0002, // Linear interpolation (y follows x from 0.0 to 1.0)
MP_CURVE_SQUARE = 0x0004, // y follow x^2 from 0.0 to 1.0
MP_CURVE_INVSQUARE = 0x0008, // y follows 1-(x^2) from 0.0 to 1.0
MP_CURVE_SINE = 0x0010, // y follows sin(x) from -pi/2 to pi/2
} MP_CURVE_TYPE;
//------------------------------------------------------------------------------
// Capability bits. Used by the object to specify what capabilities it has.
//------------------------------------------------------------------------------
typedef DWORD MP_CAPS;
// Curve capabilities - If the cap bit is set, that type of curve is supported
const MP_CAPS MP_CAPS_CURVE_JUMP = MP_CURVE_JUMP;
const MP_CAPS MP_CAPS_CURVE_LINEAR = MP_CURVE_LINEAR;
const MP_CAPS MP_CAPS_CURVE_SQUARE = MP_CURVE_SQUARE;
const MP_CAPS MP_CAPS_CURVE_INVSQUARE = MP_CURVE_INVSQUARE;
const MP_CAPS MP_CAPS_CURVE_SINE = MP_CURVE_SINE;
//------------------------------------------------------------------------------
// Structure used to return information about the type and limits of a parameter
//------------------------------------------------------------------------------
typedef struct _MP_PARAMINFO {
MP_TYPE mpType; // One of MP_TYPE_xxx codes
MP_CAPS mopCaps; // A collection of MP_CAPS flags
// Minimum and maximum values
MP_DATA mpdMinValue; // minimum legal value
MP_DATA mpdMaxValue; // maximum legal value
MP_DATA mpdNeutralValue; // default or 'center' value
// Defualt Unit and Label text. These strings will ALWAYS be English
// strings in the UNICODE character set. For international text
// use the GetParamText member function
WCHAR szUnitText[32]; // units of the parameter
WCHAR szLabel[32]; // name of the parameter
} MP_PARAMINFO;
//------------------------------------------------------------------------------
// Parameter Index types
//------------------------------------------------------------------------------
typedef DWORD DWORD;
const DWORD DWORD_ALLPARAMS = -1; // Apply this operation to all params
//------------------------------------------------------------------------------
// Defined list of timestamp types
//------------------------------------------------------------------------------
typedef DWORD MP_TIMEDATA; // Extra data to further define type
// REFERENCE_TIME (1 tick = 100 nanoseconds, MP_TIMEDATA ignored)
cpp_quote("DEFINE_GUID(GUID_TIME_REFERENCE,")
cpp_quote("0x93ad712b, 0xdaa0, 0x4ffe, 0xbc, 0x81, 0xb0, 0xce, 0x50, 0xf, 0xcd, 0xd9);")
// Music Time (MP_TIMEDATA = parts/quarter note)
cpp_quote("DEFINE_GUID(GUID_TIME_MUSIC,")
cpp_quote("0x574c49d, 0x5b04, 0x4b15, 0xa5, 0x42, 0xae, 0x28, 0x20, 0x30, 0x11, 0x7b);")
// Time is measures in samples. MP_TIMEDATA = Samples/sec)
cpp_quote("DEFINE_GUID(GUID_TIME_SAMPLES,")
cpp_quote("0xa8593d05, 0xc43, 0x4984, 0x9a, 0x63, 0x97, 0xaf, 0x9e, 0x2, 0xc4, 0xc0);")
//------------------------------------------------------------------------------
// The value of a given parameter at a specific point in time
//------------------------------------------------------------------------------
typedef DWORD MP_FLAGS;
const MP_FLAGS MPF_ENVLP_STANDARD = 0x0000; // Use all data provided
const MP_FLAGS MPF_ENVLP_BEGIN_CURRENTVAL = 0x0001;
// Ignore valStart value, use current value as the staring point
const MP_FLAGS MPF_ENVLP_BEGIN_NEUTRALVAL = 0x0002;
// Ignore valStart value, use neutral value as the staring point
typedef struct _MP_ENVELOPE_SEGMENT {
REFERENCE_TIME rtStart; // Start time in current time format
REFERENCE_TIME rtEnd; // End time in current time format
MP_DATA valStart; // Initial Value
MP_DATA valEnd; // Final Value
MP_CURVE_TYPE iCurve; // One of MP_CURVE_TYPE codes
MP_FLAGS flags; // Special cases
} MP_ENVELOPE_SEGMENT;
//------------------------------------------------------------------------------
// Define flags for Punch-in timing
//------------------------------------------------------------------------------
const MP_FLAGS MPF_PUNCHIN_REFTIME = 0; // Use the reference time as the PI time
const MP_FLAGS MPF_PUNCHIN_NOW = 0x0001; // Punch in at the current clock time
const MP_FLAGS MPF_PUNCHIN_STOPPED = 0x0002; // Return change notifications during
// author time
//------------------------------------------------------------------------------
// IMediaParamInfo - Interface used to determine the names, data types and
// units of the parameters which are exposed by the object. This interface
// is used at discovery time, and is not required during run-time since the
// objects parameters are a fixed set and this data can be cached by the
// calling applicaiton.
//------------------------------------------------------------------------------
[
object,
uuid(6d6cbb60-a223-44aa-842f-a2f06750be6d),
version(1.0)
]
interface IMediaParamInfo : IUnknown
{
HRESULT GetParamCount (
[out] DWORD * pdwParams
);
HRESULT GetParamInfo (
[in] DWORD dwParamIndex,
[out] MP_PARAMINFO * pInfo
);
// returns a series of null terminated strings. strings are in the
// following order:
// Param Label, Units Text, 1st Enum Text, 2nd Enum Text, etc...
HRESULT GetParamText (
[in] DWORD dwParamIndex, // which param to get text for
[out] WCHAR **ppwchText // returns ptr to CoTaskMemAlloc'd string
);
// Returns the number of diffrent time formats this object understands
HRESULT GetNumTimeFormats (
[out] DWORD * pdwNumTimeFormats
);
// Returns the GUID for the ith supported time format
HRESULT GetSupportedTimeFormat(
[in] DWORD dwFormatIndex,
[out] GUID *pguidTimeFormat
);
// Returns the current time format
HRESULT GetCurrentTimeFormat (
[out] GUID *pguidTimeFormat,
[out] MP_TIMEDATA *pTimeData
);
}
//------------------------------------------------------------------------------
// IMediaParams - Interfaes used to actually set the media params and the
// envelopes to follow
//------------------------------------------------------------------------------
[
object,
uuid(6d6cbb61-a223-44aa-842f-a2f06750be6e),
version(1.0)
]
interface IMediaParams : IUnknown
{
// Single param Get/Set methods
HRESULT GetParam (
[in] DWORD dwParamIndex,
[out] MP_DATA *pValue
);
HRESULT SetParam (
[in] DWORD dwParamIndex,
[in] MP_DATA value
);
// Envelope methods (param change over time)
HRESULT AddEnvelope (
[in] DWORD dwParamIndex,
[in] DWORD cSegments,
[in] MP_ENVELOPE_SEGMENT * pEnvelopeSegments
);
// Flush all of the envelope information for the given paramter between
// the timestamps specified
HRESULT FlushEnvelope (
[in] DWORD dwParamIndex,
[in] REFERENCE_TIME refTimeStart,
[in] REFERENCE_TIME refTimeEnd
);
// Change the time format being used by the object
HRESULT SetTimeFormat (
[in] GUID guidTimeFormat,
[in] MP_TIMEDATA mpTimeData
);
}

View File

@ -0,0 +1,72 @@
// Copyright (c) 1998 Microsoft Corporation. All Rights Reserved.
import "unknwn.idl";
// data id flags, used to notify the client whenever pertinent data changes
#define MIXER_DATA_ASPECT_RATIO 0x00000001 // picture aspect ratio changed
#define MIXER_DATA_NATIVE_SIZE 0x00000002 // native size of video changed
#define MIXER_DATA_PALETTE 0x00000004 // palette of video changed
// status flags defined here
#define MIXER_STATE_MASK 0x00000003 // use this mask with state status bits
#define MIXER_STATE_UNCONNECTED 0x00000000 // mixer is unconnected and stopped
#define MIXER_STATE_CONNECTED_STOPPED 0x00000001 // mixer is connected and stopped
#define MIXER_STATE_CONNECTED_PAUSED 0x00000002 // mixer is connected and paused
#define MIXER_STATE_CONNECTED_PLAYING 0x00000003 // mixer is connected and playing
interface IMixerOCXNotify;
interface IMixerOCX;
[
object,
uuid(81A3BD31-DEE1-11d1-8508-00A0C91F9CA0),
helpstring("IMixerOCXNotify Interface"),
pointer_default(unique)
]
interface IMixerOCXNotify : IUnknown
{
// invalidates the rect
HRESULT OnInvalidateRect([in] LPCRECT lpcRect);
// informs that a status change has occured, new status bits provided in ulStatusFlags
HRESULT OnStatusChange([in] ULONG ulStatusFlags);
// informs that data parameters, whose id is present in ilDataFlags has changed
HRESULT OnDataChange([in] ULONG ulDataFlags);
};
[
object,
uuid(81A3BD32-DEE1-11d1-8508-00A0C91F9CA0),
helpstring("IMixerOCX Interface"),
pointer_default(unique)
]
interface IMixerOCX : IUnknown
{
// used to notify the mixer that the display mode has changed, the mixer handles this
// asynchronously and the calls OnStatusChange(MIXER_DISPLAYCHANGE_HANDLED) when processing
// is done
HRESULT OnDisplayChange([in] ULONG ulBitsPerPixel, [in] ULONG ulScreenWidth, [in] ULONG ulScreenHeight);
HRESULT GetAspectRatio([out] LPDWORD pdwPictAspectRatioX, [out] LPDWORD pdwPictAspectRatioY);
HRESULT GetVideoSize([out] LPDWORD pdwVideoWidth, [out] LPDWORD pdwVideoHeight);
HRESULT GetStatus([out] LPDWORD *pdwStatus);
// the dc provided here is not supposed to be cached. If apps have set a dc using
// SetDrawInfo, then it is illegal to provide a non NULL argument here
HRESULT OnDraw([in] HDC hdcDraw, [in] LPCRECT prcDraw);
// lpptTopLeftSC should be NULL unless MIXER_DRAW_DC_ONSCREEN is set to TRUE
// specifying a NULL value for lprcClip means no clipping
// lpptTopLeftSC - top left corner of surface/dc in screen coordinates
// prcDrawCC - draw rectangle in surface/dc coordinates
// lprcClip - clipping rect in surface/dc coordinates (optional)
HRESULT SetDrawRegion([in] LPPOINT lpptTopLeftSC, [in] LPCRECT prcDrawCC, [in] LPCRECT lprcClip);
// function to set the sink interface for client notification
HRESULT Advise([in] IMixerOCXNotify *pmdns);
// function to remove the sink interface
HRESULT UnAdvise();
};

View File

@ -0,0 +1,190 @@
//------------------------------------------------------------------------------
// File: MMStream.idl
//
// Desc: MultiMedia streaming interface IDL file. Used by MIDL tool
// to generate mmstream.h.
//
// Copyright (c) 1998-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
import "unknwn.idl";
cpp_quote("#define MS_ERROR_CODE(x) MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)")
cpp_quote("#define MS_SUCCESS_CODE(x) MAKE_HRESULT(0, FACILITY_ITF, x)")
cpp_quote("#define MS_S_PENDING MS_SUCCESS_CODE(1)")
cpp_quote("#define MS_S_NOUPDATE MS_SUCCESS_CODE(2)")
cpp_quote("#define MS_S_ENDOFSTREAM MS_SUCCESS_CODE(3)")
cpp_quote("#define MS_E_SAMPLEALLOC MS_ERROR_CODE(1)")
cpp_quote("#define MS_E_PURPOSEID MS_ERROR_CODE(2)")
cpp_quote("#define MS_E_NOSTREAM MS_ERROR_CODE(3)")
cpp_quote("#define MS_E_NOSEEKING MS_ERROR_CODE(4)")
cpp_quote("#define MS_E_INCOMPATIBLE MS_ERROR_CODE(5)")
cpp_quote("#define MS_E_BUSY MS_ERROR_CODE(6)")
cpp_quote("#define MS_E_NOTINIT MS_ERROR_CODE(7)")
cpp_quote("#define MS_E_SOURCEALREADYDEFINED MS_ERROR_CODE(8)")
cpp_quote("#define MS_E_INVALIDSTREAMTYPE MS_ERROR_CODE(9)")
cpp_quote("#define MS_E_NOTRUNNING MS_ERROR_CODE(10)")
cpp_quote("// {A35FF56A-9FDA-11d0-8FDF-00C04FD9189D}")
cpp_quote("DEFINE_GUID(MSPID_PrimaryVideo, ")
cpp_quote("0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
cpp_quote("// {A35FF56B-9FDA-11d0-8FDF-00C04FD9189D}")
cpp_quote("DEFINE_GUID(MSPID_PrimaryAudio,")
cpp_quote("0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
cpp_quote("#if(_WIN32_WINNT < 0x0400)")
typedef void (__stdcall * PAPCFUNC)(DWORD_PTR dwParam);
cpp_quote("#endif")
typedef LONGLONG STREAM_TIME;
typedef GUID MSPID;
typedef REFGUID REFMSPID;
typedef enum {
STREAMTYPE_READ = 0,
STREAMTYPE_WRITE = 1,
STREAMTYPE_TRANSFORM= 2
} STREAM_TYPE;
typedef enum {
STREAMSTATE_STOP = 0,
STREAMSTATE_RUN = 1
} STREAM_STATE;
typedef enum {
COMPSTAT_NOUPDATEOK = 0x00000001,
COMPSTAT_WAIT = 0x00000002,
COMPSTAT_ABORT = 0x00000004
} COMPLETION_STATUS_FLAGS;
// Flags for GetInformation
enum {
MMSSF_HASCLOCK = 0x00000001,
MMSSF_SUPPORTSEEK = 0x00000002,
MMSSF_ASYNCHRONOUS = 0x00000004
};
// Flags for StreamSample::Update
enum {
SSUPDATE_ASYNC = 0x00000001,
SSUPDATE_CONTINUOUS = 0x00000002
};
interface IMultiMediaStream;
interface IMediaStream;
interface IStreamSample;
// IMultiMediaStream interface
[
object,
local,
uuid(B502D1BC-9A57-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IMultiMediaStream : IUnknown {
HRESULT GetInformation(
[out] DWORD *pdwFlags,
[out] STREAM_TYPE *pStreamType);
HRESULT GetMediaStream(
[in] REFMSPID idPurpose,
[out] IMediaStream **ppMediaStream);
HRESULT EnumMediaStreams(
[in] long Index,
[out] IMediaStream **ppMediaStream);
HRESULT GetState(
[out] STREAM_STATE *pCurrentState);
HRESULT SetState(
[in] STREAM_STATE NewState);
HRESULT GetTime(
[out] STREAM_TIME *pCurrentTime);
HRESULT GetDuration(
[out] STREAM_TIME *pDuration);
HRESULT Seek(
[in] STREAM_TIME SeekTime);
HRESULT GetEndOfStreamEventHandle(
[out] HANDLE *phEOS);
};
// IMediaStream interface
[
object,
uuid(B502D1BD-9A57-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IMediaStream : IUnknown {
HRESULT GetMultiMediaStream(
[out] IMultiMediaStream **ppMultiMediaStream);
HRESULT GetInformation(
[out] MSPID *pPurposeId,
[out] STREAM_TYPE *pType);
HRESULT SetSameFormat(
[in] IMediaStream *pStreamThatHasDesiredFormat,
[in] DWORD dwFlags);
HRESULT AllocateSample(
[in] DWORD dwFlags,
[out] IStreamSample **ppSample);
HRESULT CreateSharedSample(
[in] IStreamSample *pExistingSample,
[in] DWORD dwFlags,
[out] IStreamSample **ppNewSample);
HRESULT SendEndOfStream(DWORD dwFlags);
};
// IStreamSample interface
[
object,
local,
uuid(B502D1BE-9A57-11d0-8FDE-00C04FD9189D),
pointer_default(unique)
]
interface IStreamSample : IUnknown {
HRESULT GetMediaStream(
[in] IMediaStream **ppMediaStream);
HRESULT GetSampleTimes(
[out] STREAM_TIME * pStartTime,
[out] STREAM_TIME * pEndTime,
[out] STREAM_TIME * pCurrentTime);
HRESULT SetSampleTimes(
[in] const STREAM_TIME *pStartTime,
[in] const STREAM_TIME *pEndTime);
HRESULT Update(
[in] DWORD dwFlags,
[in] HANDLE hEvent,
[in] PAPCFUNC pfnAPC,
[in] DWORD_PTR dwAPCData);
HRESULT CompletionStatus(
[in] DWORD dwFlags,
[in] DWORD dwMilliseconds);
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,52 @@
//------------------------------------------------------------------------------
// File: RegBag.idl
//
// Desc: IDL source for RegBag.dll.
//
// Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (C) Microsoft Corporation, 1999-2000.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#pragma once")
#ifndef DO_NO_IMPORTS
import "objidl.idl";
import "oaidl.idl";
import "ocidl.idl";
#endif
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////
//
// Custom Factory interface
// since com doesn't support ctors or initialization parameters on std factory interface
// we have a custom creation interface
//
///////////////////////////////////////////////////////////////////////////////
//*****************************************************************************
///////////////////////////////////////////////////////////////////////////////////////
[object,
hidden, restricted,
uuid(8A674B48-1F63-11d3-B64C-00C04F79498E),
helpstring("Create property bag backed by registry"),
pointer_default(unique),
local
]
interface ICreatePropBagOnRegKey : IUnknown {
// NOTE: it is up to the caller to set the correct registry access based on the interface
// and methods the caller intends to use
// IPropertyBag2::GetPropertyInfo and CountProperties require both KEY_QUERY_VALUE and KEY_ENUMERATE_SUBKEYS
// IPropertyBagXXX::Read requires KEY_READ
// IPropertyBagXXX::Write requires KEY_WRITE
// also, you must CoTaskMemFree the name string from GetPropertyInfo
// if you write a value of VT_EMPTY or VT_NULL the property will be removed from the bag and the corresponding
// registry info will be deleted.
HRESULT Create([in] HKEY hkey, [in] LPCOLESTR subkey, [in] DWORD ulOptions, [in] DWORD samDesired, REFIID iid, [out] LPVOID *ppBag);
};

View File

@ -0,0 +1,974 @@
/*++
Copyright (c) 2002 Microsoft Corporation
Module Name:
sbe.idl
Abstract:
This module the StreamBuffer interface definitions & CLSIDs, public
--*/
import "unknwn.idl" ;
import "wtypes.idl" ;
import "objidl.idl";
import "strmif.idl" ;
// ============================================================================
// interfaces
interface IStreamBufferSink ; // get recording objects
interface IStreamBufferSource ; // associates with IStreamBufferSink
interface IStreamBufferRecordControl ; // recording control
interface IStreamBufferRecordingAttribute ; // StreamBuffer attribute creation
interface IEnumStreamBufferRecordingAttrib ; // StreamBuffer attribute enumeration
interface IStreamBufferConfigure ; // configuration interface
interface IStreamBufferMediaSeeking ; // IMediaSeeking but with different GUID
interface IStreamBufferPolicy ; // StreamBuffer policies
interface IStreamBufferInitialize ; // allows 3rd party app to set HKEY
[
object,
uuid(9ce50f2d-6ba7-40fb-a034-50b1a674ec78),
pointer_default(unique)
]
[local] interface IStreamBufferInitialize : IUnknown
{
/*++
------------------------------------------------------------------------
SetHKEY ()
Implemented on StreamBufferStreamSink and StreamBufferSource filters.
Gives a hosting application the ability to specify HKEY root in
registry. This method must called **early**: after the filter is
instantiated, but before StreamBufferSource is locked (explicitly or
implicitely) if calling the method on StreamBufferSource, or before
a source is set (via IStreamBufferSource or IFileSourceFilter) if
calling the method on StreamBufferStreamSource. If a call is made
after either filter has been initialized internally, the call will
fail with E_UNEXPECTED. The hosting application is responsible for
ensuring that the HKEY passed in is writable & readable per the
logged-on user privileges. The HKEY is duplicated internally,
so the caller can close it after making this call.
--*/
HRESULT
SetHKEY (
[in] HKEY hkeyRoot
) ;
/*++
------------------------------------------------------------------------
SetSIDs ()
Implemented on StreamBufferStreamSink and StreamBufferSource filters.
Provides a way for the hosting application to specify security-level
sharing between capture and render processes and contexts. By
default security attributes are inherited from the hosting process,
unless the application overrides the defaults and provides them via
this method.
--*/
HRESULT
SetSIDs (
[in] DWORD cSIDs,
[in, size_is (cSIDs)] PSID * ppSID
) ;
} ;
/*++
============================================================================
============================================================================
IStreamBufferSink
Stream Source interface;
implemented on the StreamBufferSink filter;
Only way to get a recorder object's IUnknown (object will subsequently
be associated with this Sink)
--*/
enum {
RECORDING_TYPE_CONTENT = 0, // no post-recording or overlapped
RECORDING_TYPE_REFERENCE, // allows post-recording & overlapped
} ;
[
object,
uuid(afd1f242-7efd-45ee-ba4e-407a25c9a77a),
pointer_default(unique)
]
interface IStreamBufferSink : IUnknown
{
/*++
------------------------------------------------------------------------
LockProfile ()
1. Locks the profile;
2. No *new* input pin connections will be accepted;
3. Existing pins that are, or have ever been, connected can be
reconnected if the media type is exactly the same as the first
successful connection;
4. Can be called multiple times safely with NULL parameter, but only
once with non-NULL parameter; returns E_UNEXPECTED if called more
than once with non-NULL param, or after the hosting filter has run;
5. Must be called before the filter that implements this interface is
ever run; when it is run, it locks implicitely and this method has
no effect if called with NULL parameters, or fails if called with
non-NULL parameter for the reasons listed above;
6. Errors with VFW_E_UNSUPPORTED_STREAM if there are no streams in the
profile;
Parameter Detail
----------------
pszStreamBufferFilename
Is a NULL-terminated filename string. If the content written by
this sink is to be shared cross-process, this parameter specifies a
filename that will be opened by any reader(s) to read & render the
content sent into the sink.
Can be NULL (not specified)
Must be a full-path filename; if no path is specified, the file is
created in a "current" directory
If the file already exists, the call fails
Is opened with DELETE_ON_CLOSE flag, so is automatically deleted
when the sink is unlocked, or when the hosting process terminates
--*/
HRESULT
LockProfile (
[in] LPCWSTR pszStreamBufferFilename
) ;
/*++
------------------------------------------------------------------------
CreateRecorder ()
1. Returns a *new* recorder object's IUnknown;
2. Caller can call QueryInterface() on the returned pointer to get
interface pointers to configure & control the recording;
3. Returned IUnknown pointer is ref'd & must be Release()'d by the
caller
4. IStreamBufferSink interface must have been locked (explicitely or
implicitely) prior to call
To create an ordinary recording, specify RECORDING_TYPE_CONTENT for the
dwRecordType parammeter. This will record the content directly into
the specified file. These recording types only accept start and stop
times that occur in the future.
A recording of type RECORDING_TYPE_REFERENCE generates a small file
that references content saved in temporary storage. Recordings of this
type can have start and stop times that occurs in the past, and can
overlap other same-type recordings.
Reference recording *content* will be saved in the same subdirectory as
the specified reference file, but with hidden and system attributes.
The naming convention of the files will append a _1.sbe, _2.sbe, etc...
to the filename (minus extension) specified in the call e.g. a
"seinfeld01.sbe" reference file will have saved content in hidden
and system files "seinfeld01_1.sbe", "seinfeld01_2.sbe", etc...
--*/
HRESULT
CreateRecorder (
[in] LPCWSTR pszFilename,
[in] DWORD dwRecordType, // RECORDING_TYPE_CONTENT or RECORDING_TYPE_REFERENCE
[out] IUnknown ** pRecordingIUnknown
) ;
/*++
------------------------------------------------------------------------
IsProfileLocked ()
1. Returns S_OK if the profile is locked and S_FALSE if it is not.
2. Returns E_FAIL on error.
--*/
HRESULT
IsProfileLocked (
) ;
} ;
/*++
============================================================================
============================================================================
IStreamBufferSource ()
Stream Source reader interface;
Implemented on the StreamBufferSource filter;
--*/
[
object,
uuid(1c5bd776-6ced-4f44-8164-5eab0e98db12),
pointer_default(unique)
]
interface IStreamBufferSource : IUnknown
{
/*++
------------------------------------------------------------------------
SetStreamSink ()
1. Sets the StreamBuffer Sink that streams from this Source;
2. IStreamBufferSink object must be in the same process as this object;
3. Interface is AddRef()'d if the call succeeds;
Parameter Detail
----------------
pIStreamBufferSink
Sink that will stream to this Source
--*/
HRESULT
SetStreamSink (
[in] IStreamBufferSink * pIStreamBufferSink
) ;
} ;
/*++
============================================================================
============================================================================
IStreamBufferRecordControl
obtained by QIing IStreamBufferSink::CreateRecorder()-returned IUnknown *
--*/
[
object,
uuid(ba9b6c99-f3c7-4ff2-92db-cfdd4851bf31),
pointer_default(unique)
]
interface IStreamBufferRecordControl : IUnknown
{
/*++
------------------------------------------------------------------------
Start ()
1. Starts a recording;
2. Will save to the filename that is specified when this interface's
IUnknown is requested (IStreamBufferSink::CreateRecorder());
Parameter Detail
----------------
rtStart
Start time relative to "now;
If the recording type is a content recording, can only refer to
seconds in the future; allowed seconds are [0,5]
If the recording type is a reference recording, can refer to any
time that still has valid content i.e. content that has not yet
become stale
If the recording is a reference recording and (* prtStart) is
earlier than the earliest still-valid content, the call will reset
it to the earliest content; the value when the recording was
actually started will be [out]
--*/
HRESULT
Start (
[in,out] REFERENCE_TIME * prtStart
) ;
/*++
------------------------------------------------------------------------
Stop ()
1. Stops a recording;
2. Closes out the file;
Parameter Detail
----------------
rtStart
Stop time relative to "now;
If the recording type is a content recording, can only refer to
seconds in the future; allowed seconds are [0,5]
If the recording type is a reference recording, can refer to any
time that still has valid content i.e. content that has not yet
become stale; stop time cannot be <= start time
--*/
HRESULT
Stop (
[in] REFERENCE_TIME rtStop
) ;
/*++
------------------------------------------------------------------------
GetRecordingStatus ()
1. Retrieves the status of the recording
Parameter Detail
----------------
phResult
The (current) status of writing or closing the recording file;
Can be NULL;
pbStarted
If supplied, set to a non-zero value if the recording has been
started
Can be NULL;
pbStopped
If supplied, set to a non-zero value if the recording has been
stopped;
Can be NULL;
NOTE: If the recording has never been started, it will not be flagged
as stopped.
--*/
HRESULT
GetRecordingStatus (
[out] HRESULT * phResult,
[out] BOOL * pbStarted,
[out] BOOL * pbStopped
) ;
} ;
/*++
============================================================================
============================================================================
IStreamBufferRecComp
CoCreateInstance CLSID_StreamBufferComposeRecording and QueryInterface for
this interface; this interface allows the creation of a single target
content recording which consists of a number of concatenated recordings
(reference or content; can mix & match if desired)
--*/
[
object,
uuid(9E259A9B-8815-42ae-B09F-221970B154FD),
pointer_default(unique)
]
interface IStreamBufferRecComp : IUnknown
{
/*++
------------------------------------------------------------------------
Initialize ()
1. Initializes for a target recording
Parameter Detail
----------------
pszTargetFilename
Sets the target filename
Fails if the file already exists
pszSBRecProfileRef
Must be a completed, SBE-generated recording
This recording's profile will be used to define the target profile
Appended files must have exactly the same profile
--*/
HRESULT
Initialize (
[in] LPCWSTR pszTargetFilename,
[in] LPCWSTR pszSBRecProfileRef
) ;
/*++
------------------------------------------------------------------------
Append ()
1. appends an entire recording
2. fails if the recording is live
--*/
HRESULT
Append (
[in] LPCWSTR pszSBRecording
) ;
/*++
------------------------------------------------------------------------
AppendEx ()
1. appends the specified portion of the recording; the parameters must
be accurate; the call will not readjust them within the boundaries
2. the time spread must be at least 2 seconds
3. fails if the recording is live
--*/
HRESULT
AppendEx (
[in] LPCWSTR pszSBRecording,
[in] REFERENCE_TIME rtStart,
[in] REFERENCE_TIME rtStop
) ;
/*++
------------------------------------------------------------------------
GetCurrentLength ()
1. returns the current length of the recording; updates as recordings
are appended;
2. can be called repeatedly during a Append() call on another
thread;
--*/
HRESULT
GetCurrentLength (
[out] DWORD * pcSeconds
) ;
/*++
------------------------------------------------------------------------
Close ()
1. explicitely closes the recording
2. final release of interface closes the recording as well
--*/
HRESULT
Close (
) ;
/*++
------------------------------------------------------------------------
Cancel ()
1. cancels an in-progress appending operation; has no effect otherwise
--*/
HRESULT
Cancel (
) ;
} ;
/*++
============================================================================
============================================================================
IStreamBufferRecordingAttribute
obtained by calling QueryInterface on a recorder
well-known attributes:
NAME DESCRIPTION
------------------- ----------------------------------------------------
Title String containing the content title.
Author String containing the name of the content author.
Description String containing a description of the content.
Rating String containing a content rating.
Copyright String containing a content copyright message.
Duration Quadruple word value containing the playing duration
of the file, in 100-nanosecond units.
Bitrate Double word value containing the bit rate.
Seekable Boolean value; true denoting that the content is
seekable.
Stridable Boolean value, true denoting that the content is
stridable (fast forward and rewind are enabled).
Broadcast Boolean value; true denoting that the content is not
copyright-protected, and can be broadcast.
Use_DRM reserved
DRM_Flags reserved
DRM_Level reserved
Is_Protected reserved
Is_Trusted reserved
Signature_Name reserved
HasAudio Boolean, true denoting the content includes an
audio stream.
HasImage Boolean, true denoting the content includes a still
image stream (such as JPEG images).
HasScript Boolean, true denoting the content includes a script
stream.
HasVideo Boolean, true denoting the content includes a video
stream.
CurrentBitrate Double word containing the current total bitrate,
usually used for MEB (multi-bit rate) streams.
OptimalBitrate Double word containing the minimum total bitrate
recommended to stream the content and get
maximum quality.
WM/AlbumTitle String containing the album title.
WM/Track Double word containing the track number.
WM/PromotionURL String with a URL to an HTML page that contains
information about products and events (such as
concerts) that are related to this music.
WM/AlbumCoverURL String with a URL to an HTML page that contains an
image of the album cover and information about
the album.
WM/Genre String with the genre of the music.
WM/Year String with the year of publication of the music.
WM/GenreID
WM/MCDI
BannerImageType One member of the WMT_ATTR_IMAGETYPE enumeration
type.
BannerImageData The actual image data: a bitmap, JPEG, or GIF image.
BannerImageURL If the banner image is clicked on then this URL is
activated.
CopyrightURL An URL to a copyright page.
NSC_Name String containing the multicast station contact
name (read-only).
NSC_Address String containing the multicast station contact
address (read-only).
NSC_Phone String containing the multicast station contact
phone number (read-only).
NSC_Email String containing the multicast station contact
email address (read-only).
NSC_Description String containing the multicast station contact
description (read-only).
--*/
cpp_quote( "////////////////////////////////////////////////////////////////" )
cpp_quote( "//" )
cpp_quote( "// List of pre-defined attributes " )
cpp_quote( "//" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingDuration[] =L\"Duration\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingBitrate[] =L\"Bitrate\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingSeekable[] =L\"Seekable\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingStridable[] =L\"Stridable\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingBroadcast[] =L\"Broadcast\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingProtected[] =L\"Is_Protected\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingTrusted[] =L\"Is_Trusted\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingSignature_Name[] =L\"Signature_Name\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasAudio[] =L\"HasAudio\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasImage[] =L\"HasImage\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasScript[] =L\"HasScript\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasVideo[] =L\"HasVideo\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingCurrentBitrate[] =L\"CurrentBitrate\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingOptimalBitrate[] =L\"OptimalBitrate\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasAttachedImages[] =L\"HasAttachedImages\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingSkipBackward[] =L\"Can_Skip_Backward\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingSkipForward[] =L\"Can_Skip_Forward\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNumberOfFrames[] =L\"NumberOfFrames\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingFileSize[] =L\"FileSize\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasArbitraryDataStream[] =L\"HasArbitraryDataStream\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingHasFileTransferStream[] =L\"HasFileTransferStream\";" )
cpp_quote( "" )
cpp_quote( "////////////////////////////////////////////////////////////////" )
cpp_quote( "//" )
cpp_quote( "// The content description object supports 5 basic attributes." )
cpp_quote( "//" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingTitle[] =L\"Title\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAuthor[] =L\"Author\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingDescription[] =L\"Description\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingRating[] =L\"Rating\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingCopyright[] =L\"Copyright\";" )
cpp_quote( "" )
cpp_quote( "////////////////////////////////////////////////////////////////" )
cpp_quote( "//" )
cpp_quote( "// These attributes are used to configure DRM using IWMDRMWriter::SetDRMAttribute." )
cpp_quote( "//" )
cpp_quote( "static const WCHAR *g_wszStreamBufferRecordingUse_DRM = L\"Use_DRM\";" )
cpp_quote( "static const WCHAR *g_wszStreamBufferRecordingDRM_Flags = L\"DRM_Flags\";" )
cpp_quote( "static const WCHAR *g_wszStreamBufferRecordingDRM_Level = L\"DRM_Level\";" )
cpp_quote( "" )
cpp_quote( "////////////////////////////////////////////////////////////////" )
cpp_quote( "//" )
cpp_quote( "// These are the additional attributes defined in the WM attribute" )
cpp_quote( "// namespace that give information about the content." )
cpp_quote( "//" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAlbumTitle[] =L\"WM/AlbumTitle\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingTrack[] =L\"WM/Track\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingPromotionURL[] =L\"WM/PromotionURL\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAlbumCoverURL[] =L\"WM/AlbumCoverURL\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingGenre[] =L\"WM/Genre\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingYear[] =L\"WM/Year\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingGenreID[] =L\"WM/GenreID\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingMCDI[] =L\"WM/MCDI\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingComposer[] =L\"WM/Composer\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingLyrics[] =L\"WM/Lyrics\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingTrackNumber[] =L\"WM/TrackNumber\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingToolName[] =L\"WM/ToolName\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingToolVersion[] =L\"WM/ToolVersion\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingIsVBR[] =L\"IsVBR\";" )
//
// WM/AlbumArtist is a potentially different value than Author
//
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAlbumArtist[] =L\"WM/AlbumArtist\";" )
cpp_quote( "" )
cpp_quote( "////////////////////////////////////////////////////////////////" )
cpp_quote( "//" )
cpp_quote( "// These optional attributes may be used to give information " )
cpp_quote( "// about the branding of the content." )
cpp_quote( "//" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingBannerImageType[] =L\"BannerImageType\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingBannerImageData[] =L\"BannerImageData\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingBannerImageURL[] =L\"BannerImageURL\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingCopyrightURL[] =L\"CopyrightURL\";" )
cpp_quote( "////////////////////////////////////////////////////////////////" )
cpp_quote( "//" )
cpp_quote( "// Optional attributes, used to give information " )
cpp_quote( "// about video stream properties." )
cpp_quote( "//" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAspectRatioX[] =L\"AspectRatioX\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingAspectRatioY[] =L\"AspectRatioY\";" )
cpp_quote( "////////////////////////////////////////////////////////////////" )
cpp_quote( "//" )
cpp_quote( "// The NSC file supports the following attributes." )
cpp_quote( "//" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNSCName[] =L\"NSC_Name\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNSCAddress[] =L\"NSC_Address\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNSCPhone[] =L\"NSC_Phone\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNSCEmail[] =L\"NSC_Email\";" )
cpp_quote( "static const WCHAR g_wszStreamBufferRecordingNSCDescription[] =L\"NSC_Description\";" )
cpp_quote( "" )
//
// StreamBuffer Attribute datatypes;
//
typedef enum {
STREAMBUFFER_TYPE_DWORD = 0,
STREAMBUFFER_TYPE_STRING = 1,
STREAMBUFFER_TYPE_BINARY = 2,
STREAMBUFFER_TYPE_BOOL = 3,
STREAMBUFFER_TYPE_QWORD = 4,
STREAMBUFFER_TYPE_WORD = 5,
STREAMBUFFER_TYPE_GUID = 6,
} STREAMBUFFER_ATTR_DATATYPE ;
[
object,
uuid(16CA4E03-FE69-4705-BD41-5B7DFC0C95F3),
pointer_default(unique)
]
interface IStreamBufferRecordingAttribute : IUnknown
{
/*++
------------------------------------------------------------------------
SetAttribute ()
1. Sets an attribute on a recording object;
2. Fails if the IStreamBufferRecordControl::Start has already been successfully
called;
3. If an attribute of the same name already exists, overwrites the old;
--*/
HRESULT
SetAttribute (
[in] ULONG ulReserved,
[in] LPCWSTR pszAttributeName,
[in] STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType,
[in] BYTE * pbAttribute,
[in] WORD cbAttributeLength
) ;
/*++
------------------------------------------------------------------------
GetAttributeCount ()
1. Returns the count of attributes currently set;
--*/
HRESULT
GetAttributeCount (
[in] ULONG ulReserved,
[out] WORD * pcAttributes
) ;
/*++
------------------------------------------------------------------------
GetAttributeByName ()
1. Given a name, returns the attribute data;
2. If the provided buffer is too small, returns VFW_E_BUFFER_OVERFLOW,
and (* pcbLength) contains the minimum required length of the buffer
3. To learn the length of the attribute, pass in non-NULL pcbLength,
and NULL pbAttribute parameter; [out] value will be the length of
the attribute
--*/
HRESULT
GetAttributeByName (
[in] LPCWSTR pszAttributeName,
[in] ULONG * pulReserved,
[out] STREAMBUFFER_ATTR_DATATYPE * pStreamBufferAttributeType,
[out] BYTE * pbAttribute,
[in, out] WORD * pcbLength
) ;
/*++
------------------------------------------------------------------------
GetAttributeByIndex ()
1. Given an 0-based index, returns the attribute name and data
2. If either buffer is too small, returns VFW_E_BUFFER_OVERFLOW, and
(* pcbLength) and (* pcchNameLength) contain the minimum required
length of each buffer
3. The length returned by pcchNameLength includes the null-terminator
4. To learn the length of the name & attribute, pass in non-NULL
pcchNameLength & pcbLength, and NULL pszAttributeName & pbAttribute
parameters; [out] value of the non-NULL parameters will be the
lengths of the name and attribute
--*/
HRESULT
GetAttributeByIndex (
[in] WORD wIndex,
[in] ULONG * pulReserved,
[out] WCHAR * pszAttributeName,
[in, out] WORD * pcchNameLength, // includes NULL-terminator; in BYTES
[out] STREAMBUFFER_ATTR_DATATYPE * pStreamBufferAttributeType,
[out] BYTE * pbAttribute,
[in, out] WORD * pcbLength
) ;
/*++
------------------------------------------------------------------------
EnumAttributes ()
1. Returns a StreamBuffer attribute enumeration object that snapshots
the attributes at time-of-call
--*/
HRESULT
EnumAttributes (
[out] IEnumStreamBufferRecordingAttrib ** ppIEnumStreamBufferAttrib
) ;
} ;
/*++
============================================================================
============================================================================
IEnumStreamBufferRecordingAttrib
obtained by calling IStreamBufferRecordingAttribute::EnumAttributes, or
calling clone on this interface
--*/
typedef struct {
LPWSTR pszName ; // allocated by callee; freed by caller
STREAMBUFFER_ATTR_DATATYPE StreamBufferAttributeType ;
BYTE * pbAttribute ; // allocated by callee; freed by caller
WORD cbLength ;
} STREAMBUFFER_ATTRIBUTE ;
[
object,
uuid (C18A9162-1E82-4142-8C73-5690FA62FE33),
pointer_default(unique)
]
interface IEnumStreamBufferRecordingAttrib : IUnknown
{
HRESULT
Next (
[in] ULONG cRequest,
[in, out, size_is (cRequest)] STREAMBUFFER_ATTRIBUTE * pStreamBufferAttribute,
[out] ULONG * pcReceived
) ;
HRESULT
Skip (
[in] ULONG cRecords
) ;
HRESULT
Reset (
) ;
HRESULT
Clone (
[out] IEnumStreamBufferRecordingAttrib ** ppIEnumStreamBufferAttrib
) ;
} ;
/*++
============================================================================
============================================================================
IStreamBufferConfigure
--*/
[
object,
uuid(ce14dfae-4098-4af7-bbf7-d6511f835414),
pointer_default(unique)
]
interface IStreamBufferConfigure : IUnknown
{
/*++
------------------------------------------------------------------------
SetStreamBufferDirectory ()
1. Sets the directory where all content is saved, ringbuffer &
StreamBuffer;
2. Creates directory if necessary;
3. All TEMP files have hidden+system attributes
--*/
HRESULT
SetDirectory (
[in] LPCWSTR pszDirectoryName
) ;
/*++
------------------------------------------------------------------------
GetStreamBufferDirectory ()
1. Retrieves previously set backing store directory, or default
location if none was specified
--*/
HRESULT
GetDirectory (
[out] LPWSTR * ppszDirectoryName
) ;
/*++
------------------------------------------------------------------------
SetBackingFileCount ()
1. Sets the number of backing files
2. valid values
4 <= min <= 100
6 <= max <= 102
min max delta >= 2
--*/
HRESULT
SetBackingFileCount (
[in] DWORD dwMin,
[in] DWORD dwMax
) ;
/*++
------------------------------------------------------------------------
GetBackingFileCount ()
1. Retrieves previously set backing file counts, or defaults if none
have have been set
--*/
HRESULT
GetBackingFileCount (
[out] DWORD * pdwMin,
[out] DWORD * pdwMax
) ;
/*++
------------------------------------------------------------------------
SetEachBackingFileDuration ()
1. Sets the seconds of content each backing file will hold
2. valid values:
dwSeconds >= 15
--*/
HRESULT
SetBackingFileDuration (
[in] DWORD dwSeconds
) ;
/*++
------------------------------------------------------------------------
GetEachBackingFileDuration ()
1. Retrieves previously set backing file duration, or default of none
is set
--*/
HRESULT
GetBackingFileDuration (
[out] DWORD * pdwSeconds
) ;
} ;
/*++
============================================================================
============================================================================
IStreamBufferMediaSeeking
Implemented on the StreamBufferSource filter. Used to seek and set the
playback rate.
--*/
[
object,
uuid(f61f5c26-863d-4afa-b0ba-2f81dc978596),
pointer_default(unique)
]
interface IStreamBufferMediaSeeking : IMediaSeeking
{
// no additional methods have been added
} ;
/*++
============================================================================
============================================================================
events
--*/
// see evcode.h comment for range
// stream buffer engine (PVR) 0x0326 - 0x0350 (sbe.idl)
cpp_quote ("#define STREAMBUFFER_EC_BASE 0x0326")
cpp_quote ("enum {")
cpp_quote (" // timehole event")
cpp_quote (" // param1 = timehole stream offset ms")
cpp_quote (" // param1 = timehole size ms")
cpp_quote (" STREAMBUFFER_EC_TIMEHOLE = STREAMBUFFER_EC_BASE,")
cpp_quote (" ")
cpp_quote (" STREAMBUFFER_EC_STALE_DATA_READ,")
cpp_quote (" ")
cpp_quote (" STREAMBUFFER_EC_STALE_FILE_DELETED,")
cpp_quote (" STREAMBUFFER_EC_CONTENT_BECOMING_STALE,")
cpp_quote (" STREAMBUFFER_EC_WRITE_FAILURE,")
cpp_quote (" //")
cpp_quote (" // unexpected read failure")
cpp_quote (" // param1 = HRESULT failure")
cpp_quote (" // param2 = undefined")
cpp_quote (" STREAMBUFFER_EC_READ_FAILURE,")
cpp_quote (" //")
cpp_quote (" // playback rate change")
cpp_quote (" // param1 = old_playback_rate * 10000 e.g. 2x is 20000")
cpp_quote (" // param2 = new_playback_rate * 10000")
cpp_quote (" STREAMBUFFER_EC_RATE_CHANGED,")
cpp_quote ("} ;")

View File

@ -0,0 +1,51 @@
//------------------------------------------------------------------------------
// File: StrmIf.idl
//
// Desc: ActiveMovie interface definitions.
//
// Copyright (c) 1992 - 2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
// Temporarily disable the /W4 compiler warning C4201, which will be
// reported by all apps which include streams.h or dshow.h, which both
// include the strmif.h generated by this IDL file.
//
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Copyright (C) Microsoft Corporation, 1999-2002.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("// Disable /W4 compiler warning C4201: nameless struct/union")
cpp_quote("#pragma warning(push)")
cpp_quote("#pragma warning(disable:4201) // Disable C4201: nameless struct/union")
cpp_quote(" ") // Blank space
import "unknwn.idl";
import "objidl.idl"; // for IPersist (IFilter's root)
#include "devenum.idl"
// core interfaces
#include "axcore.idl"
// extended, ActiveMovie-only interfaces
#include "axextend.idl"
// application interfaces for DVD
#include "dvdif.idl"
// Dynamic graph stuff
#include "dyngraph.idl"
// Video Mixing Renderer
#include "VMRender.idl"
//
// Restore the previous setting for C4201 compiler warning
//
cpp_quote("// Restore the previous setting for C4201 compiler warning")
cpp_quote("#pragma warning(pop)")

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,242 @@
// TvRatings.idl : IDL source for TvRatings.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (TvRatings.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
typedef enum
{
MPAA = 0,
US_TV = 1,
Canadian_English = 2,
Canadian_French = 3,
Reserved4 = 4, // filler - not used.
System5 = 5, // maps to system 5 of XDS rating table 19
System6 = 6, // maps to system 6 of XDS rating table 19
Reserved7 = 7, // filler - not used.
TvRat_kSystems = 8, // used for allocating structures
TvRat_SystemDontKnow = 255 // haven't gotten a data value yet... (perhaps change to 0)
} EnTvRat_System;
typedef enum // constraint is that must be in increasing order, and max < 2^8
{
TvRat_0 = 0,
TvRat_1 = 1,
TvRat_2 = 2,
TvRat_3 = 3,
TvRat_4 = 4,
TvRat_5 = 5,
TvRat_6 = 6,
TvRat_7 = 7,
TvRat_kLevels = 8, // used for allocating structures
TvRat_LevelDontKnow = 255 // haven't gotten a data value yet... (perhaps change to _7)
} EnTvRat_GenericLevel;
typedef enum
{
MPAA_NotApplicable = TvRat_0,
MPAA_G = TvRat_1,
MPAA_PG = TvRat_2,
MPAA_PG13 = TvRat_3,
MPAA_R = TvRat_4,
MPAA_NC17 = TvRat_5,
MPAA_X = TvRat_6,
MPAA_NotRated = TvRat_7
} EnTvRat_MPAA;
typedef enum
{
US_TV_None = TvRat_0,
US_TV_Y = TvRat_1,
US_TV_Y7 = TvRat_2,
US_TV_G = TvRat_3,
US_TV_PG = TvRat_4,
US_TV_14 = TvRat_5,
US_TV_MA = TvRat_6,
US_TV_None7 = TvRat_7
} EnTvRat_US_TV;
typedef enum
{
CAE_TV_Exempt = TvRat_0,
CAE_TV_C = TvRat_1,
CAE_TV_C8 = TvRat_2,
CAE_TV_G = TvRat_3,
CAE_TV_PG = TvRat_4,
CAE_TV_14 = TvRat_5,
CAE_TV_18 = TvRat_6,
CAE_TV_Reserved = TvRat_7
} EnTvRat_CAE_TV;
typedef enum
{
CAF_TV_Exempt = TvRat_0,
CAF_TV_G = TvRat_1,
CAF_TV_8 = TvRat_2,
CAF_TV_13 = TvRat_3,
CAF_TV_16 = TvRat_4,
CAF_TV_18 = TvRat_5,
CAF_TV_Reserved6 = TvRat_6,
CAF_TV_Reserved = TvRat_7
} EnTvRat_CAF_TV;
// -------------------
typedef enum
{
BfAttrNone = 0, // no bits set (for initialization)
BfIsBlocked = 1, // if set,
BfIsAttr_1 = 2,
BfIsAttr_2 = 4,
BfIsAttr_3 = 8,
BfIsAttr_4 = 16,
BfIsAttr_5 = 32, // no bits set...
BfIsAttr_6 = 64,
BfIsAttr_7 = 128,
BfValidAttrSubmask = 255 // IsBlocked is not a valid attribute to display
} BfEnTvRat_GenericAttributes;
typedef enum
{
US_TV_IsBlocked = BfIsBlocked,
US_TV_IsViolent = BfIsAttr_1,
US_TV_IsSexualSituation = BfIsAttr_2,
US_TV_IsAdultLanguage = BfIsAttr_3,
US_TV_IsSexuallySuggestiveDialog = BfIsAttr_4,
US_TV_ValidAttrSubmask = 31 // IsBlocked is not a valid attribute for TV
} BfEnTvRat_Attributes_US_TV;
typedef enum
{
MPAA_IsBlocked = BfIsBlocked,
MPAA_ValidAttrSubmask = 1 // IsBlocked is not a valid attribute
} BfEnTvRat_Attributes_MPAA;
typedef enum
{
CAE_IsBlocked = BfIsBlocked,
CAE_ValidAttrSubmask = 1 // IsBlocked is not a valid attribute
} BfEnTvRat_Attributes_CAE_TV;
typedef enum
{
CAF_IsBlocked = BfIsBlocked,
CAF_ValidAttrSubmask = 1 // IsBlocked is not a valid attribute
} BfEnTvRat_Attributes_CAF_TV;
// -------------------------------------------------------
// -------------------------------------------------------
[
object,
uuid(C5C5C5B0-3ABC-11D6-B25B-00C04FA0C026),
dual,
helpstring("IXDSToRat Interface"),
pointer_default(unique)
]
interface IXDSToRat : IDispatch
{
[id(1), helpstring("method Init")]
HRESULT Init();
[id(2), helpstring("method ParseXDSBytePair")]
HRESULT ParseXDSBytePair(
[in] BYTE byte1,
[in] BYTE byte2,
[out] EnTvRat_System *pEnSystem,
[out] EnTvRat_GenericLevel *pEnLevel,
[out] LONG *plBfEnAttributes // bitfield of BfEnTvRat_GenericAttributes
);
};
// ------------------------
[
object,
uuid(C5C5C5B1-3ABC-11D6-B25B-00C04FA0C026),
dual,
helpstring("IEvalRat Interface"),
pointer_default(unique)
]
interface IEvalRat : IDispatch
{
[propget, id(1), helpstring("property BlockedRatingAttributes")]
HRESULT BlockedRatingAttributes(
[in] EnTvRat_System enSystem,
[in] EnTvRat_GenericLevel enLevel,
[out, retval] LONG *plbfAttrs // bitfield of BfEnTvRat_GenericAttributes
);
[propput, id(1), helpstring("property BlockedRatingAttributes")]
HRESULT BlockedRatingAttributes(
[in] EnTvRat_System enSystem,
[in] EnTvRat_GenericLevel enLevel,
[in] LONG lbfAttrs // bitfield of BfEnTvRat_GenericAttributes
);
[propget, id(2), helpstring("property BlockUnRated")]
HRESULT BlockUnRated(
[out, retval] BOOL *pfBlockUnRatedShows
);
[propput, id(2), helpstring("property BlockUnRated")]
HRESULT BlockUnRated(
[in] BOOL fBlockUnRatedShows
);
[ id(3), helpstring("method MostRestrictiveRating")]
HRESULT MostRestrictiveRating(
[in] EnTvRat_System enSystem1,
[in] EnTvRat_GenericLevel enEnLevel1,
[in] LONG lbfEnAttr1, // bitfield of BfEnTvRat_GenericAttributes
[in] EnTvRat_System enSystem2,
[in] EnTvRat_GenericLevel enEnLevel2,
[in] LONG lbfEnAttr2, // bitfield of BfEnTvRat_GenericAttributes
[out] EnTvRat_System *penSystem,
[out] EnTvRat_GenericLevel *penEnLevel,
[out] LONG *plbfEnAttr // bitfield of BfEnTvRat_GenericAttributes
);
[ id(4), helpstring("method TestRating")]
HRESULT TestRating(
[in] EnTvRat_System enShowSystem,
[in] EnTvRat_GenericLevel enShowLevel,
[in] LONG lbfEnShowAttributes // bitfield of BfEnTvRat_GenericAttributes
);
};
// This is enforcing a particular implementation on folk...
// Don't need this particular TypeLib, just as long
// as some library/libraries exists that supports the two coClasses,
// with the give ClassID's.
[
uuid(C5C5C500-3ABC-11D6-B25B-00C04FA0C026),
version(1.0),
helpstring("TvRatings 1.0 Type Library")
]
library TVRATINGSLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(C5C5C5F0-3ABC-11D6-B25B-00C04FA0C026),
helpstring("XDSToRat Class")
]
coclass XDSToRat
{
[default] interface IXDSToRat;
};
[
uuid(C5C5C5F1-3ABC-11D6-B25B-00C04FA0C026),
helpstring("EvalRat Class")
]
coclass EvalRat
{
[default] interface IEvalRat;
};
};

File diff suppressed because it is too large Load Diff

187
third_party/dx9_sdk/include/DxDiag.h vendored Normal file
View File

@ -0,0 +1,187 @@
/*==========================================================================;
*
* Copyright (C) Microsoft Corporation. All Rights Reserved.
*
* File: dxdiag.h
* Content: DirectX Diagnostic Tool include file
*
****************************************************************************/
#ifndef _DXDIAG_H_
#define _DXDIAG_H_
#include <ole2.h> // for DECLARE_INTERFACE_ and HRESULT
// This identifier is passed to IDxDiagProvider::Initialize in order to ensure that an
// application was built against the correct header files. This number is
// incremented whenever a header (or other) change would require applications
// to be rebuilt. If the version doesn't match, IDxDiagProvider::Initialize will fail.
// (The number itself has no meaning.)
#define DXDIAG_DX9_SDK_VERSION 111
#ifdef __cplusplus
extern "C" {
#endif
/****************************************************************************
*
* DxDiag Errors
*
****************************************************************************/
#define DXDIAG_E_INSUFFICIENT_BUFFER ((HRESULT)0x8007007AL) // HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
/****************************************************************************
*
* DxDiag CLSIDs
*
****************************************************************************/
// {A65B8071-3BFE-4213-9A5B-491DA4461CA7}
DEFINE_GUID(CLSID_DxDiagProvider,
0xA65B8071, 0x3BFE, 0x4213, 0x9A, 0x5B, 0x49, 0x1D, 0xA4, 0x46, 0x1C, 0xA7);
/****************************************************************************
*
* DxDiag Interface IIDs
*
****************************************************************************/
// {9C6B4CB0-23F8-49CC-A3ED-45A55000A6D2}
DEFINE_GUID(IID_IDxDiagProvider,
0x9C6B4CB0, 0x23F8, 0x49CC, 0xA3, 0xED, 0x45, 0xA5, 0x50, 0x00, 0xA6, 0xD2);
// {0x7D0F462F-0x4064-0x4862-BC7F-933E5058C10F}
DEFINE_GUID(IID_IDxDiagContainer,
0x7D0F462F, 0x4064, 0x4862, 0xBC, 0x7F, 0x93, 0x3E, 0x50, 0x58, 0xC1, 0x0F);
/****************************************************************************
*
* DxDiag Interface Pointer definitions
*
****************************************************************************/
typedef struct IDxDiagProvider *LPDXDIAGPROVIDER, *PDXDIAGPROVIDER;
typedef struct IDxDiagContainer *LPDXDIAGCONTAINER, *PDXDIAGCONTAINER;
/****************************************************************************
*
* DxDiag Structures
*
****************************************************************************/
typedef struct _DXDIAG_INIT_PARAMS
{
DWORD dwSize; // Size of this structure.
DWORD dwDxDiagHeaderVersion; // Pass in DXDIAG_DX9_SDK_VERSION. This verifies
// the header and dll are correctly matched.
BOOL bAllowWHQLChecks; // If true, allow dxdiag to check if drivers are
// digital signed as logo'd by WHQL which may
// connect via internet to update WHQL certificates.
VOID* pReserved; // Reserved. Must be NULL.
} DXDIAG_INIT_PARAMS;
/****************************************************************************
*
* DxDiag Application Interfaces
*
****************************************************************************/
//
// COM definition for IDxDiagProvider
//
#undef INTERFACE // External COM Implementation
#define INTERFACE IDxDiagProvider
DECLARE_INTERFACE_(IDxDiagProvider,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IDxDiagProvider methods ***/
STDMETHOD(Initialize) (THIS_ DXDIAG_INIT_PARAMS* pParams) PURE;
STDMETHOD(GetRootContainer) (THIS_ IDxDiagContainer **ppInstance) PURE;
};
//
// COM definition for IDxDiagContainer
//
#undef INTERFACE // External COM Implementation
#define INTERFACE IDxDiagContainer
DECLARE_INTERFACE_(IDxDiagContainer,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IDxDiagContainer methods ***/
STDMETHOD(GetNumberOfChildContainers) (THIS_ DWORD *pdwCount) PURE;
STDMETHOD(EnumChildContainerNames) (THIS_ DWORD dwIndex, LPWSTR pwszContainer, DWORD cchContainer) PURE;
STDMETHOD(GetChildContainer) (THIS_ LPCWSTR pwszContainer, IDxDiagContainer **ppInstance) PURE;
STDMETHOD(GetNumberOfProps) (THIS_ DWORD *pdwCount) PURE;
STDMETHOD(EnumPropNames) (THIS_ DWORD dwIndex, LPWSTR pwszPropName, DWORD cchPropName) PURE;
STDMETHOD(GetProp) (THIS_ LPCWSTR pwszPropName, VARIANT *pvarProp) PURE;
};
/****************************************************************************
*
* DxDiag application interface macros
*
****************************************************************************/
#if !defined(__cplusplus) || defined(CINTERFACE)
#define IDxDiagProvider_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDxDiagProvider_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDxDiagProvider_Release(p) (p)->lpVtbl->Release(p)
#define IDxDiagProvider_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
#define IDxDiagProvider_GetRootContainer(p,a) (p)->lpVtbl->GetRootContainer(p,a)
#define IDxDiagContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDxDiagContainer_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDxDiagContainer_Release(p) (p)->lpVtbl->Release(p)
#define IDxDiagContainer_GetNumberOfChildContainers(p,a) (p)->lpVtbl->GetNumberOfChildContainers(p,a)
#define IDxDiagContainer_EnumChildContainerNames(p,a,b,c) (p)->lpVtbl->EnumChildContainerNames(p,a,b,c)
#define IDxDiagContainer_GetChildContainer(p,a,b) (p)->lpVtbl->GetChildContainer(p,a,b)
#define IDxDiagContainer_GetNumberOfProps(p,a) (p)->lpVtbl->GetNumberOfProps(p,a)
#define IDxDiagContainer_EnumProps(p,a,b) (p)->lpVtbl->EnumProps(p,a,b,c)
#define IDxDiagContainer_GetProp(p,a,b) (p)->lpVtbl->GetProp(p,a,b)
#else /* C++ */
#define IDxDiagProvider_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
#define IDxDiagProvider_AddRef(p) (p)->AddRef(p)
#define IDxDiagProvider_Release(p) (p)->Release(p)
#define IDxDiagProvider_Initialize(p,a,b) (p)->Initialize(p,a,b)
#define IDxDiagProvider_GetRootContainer(p,a) (p)->GetRootContainer(p,a)
#define IDxDiagContainer_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
#define IDxDiagContainer_AddRef(p) (p)->AddRef(p)
#define IDxDiagContainer_Release(p) (p)->Release(p)
#define IDxDiagContainer_GetNumberOfChildContainers(p,a) (p)->GetNumberOfChildContainers(p,a)
#define IDxDiagContainer_EnumChildContainerNames(p,a,b,c) (p)->EnumChildContainerNames(p,a,b,c)
#define IDxDiagContainer_GetChildContainer(p,a,b) (p)->GetChildContainer(p,a,b)
#define IDxDiagContainer_GetNumberOfProps(p,a) (p)->GetNumberOfProps(p,a)
#define IDxDiagContainer_EnumProps(p,a,b) (p)->EnumProps(p,a,b,c)
#define IDxDiagContainer_GetProp(p,a,b) (p)->GetProp(p,a,b)
#endif
#ifdef __cplusplus
}
#endif
#endif /* _DXDIAG_H_ */

117
third_party/dx9_sdk/include/Iwstdec.h vendored Normal file
View File

@ -0,0 +1,117 @@
//------------------------------------------------------------------------------
// File: iwstdec.h
//
// Desc: WST Decoder related definitions and interfaces for ActiveMovie
//
// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
#ifndef __IWSTDEC__
#define __IWSTDEC__
//
// Some data types used as WST decoder parameters by the interface
//
typedef struct _AM_WST_PAGE {
DWORD dwPageNr ;
DWORD dwSubPageNr ;
BYTE *pucPageData;
} AM_WST_PAGE, *PAM_WST_PAGE ;
typedef enum _AM_WST_LEVEL {
AM_WST_LEVEL_1_5 = 0
} AM_WST_LEVEL, *PAM_WST_LEVEL ;
typedef enum _AM_WST_SERVICE {
AM_WST_SERVICE_None = 0,
AM_WST_SERVICE_Text,
AM_WST_SERVICE_IDS,
AM_WST_SERVICE_Invalid
} AM_WST_SERVICE, *PAM_WST_SERVICE ;
typedef enum _AM_WST_STATE {
AM_WST_STATE_Off = 0,
AM_WST_STATE_On
} AM_WST_STATE, *PAM_WST_STATE ;
typedef enum _AM_WST_STYLE {
AM_WST_STYLE_None = 0,
AM_WST_STYLE_Invers
} AM_WST_STYLE, *PAM_WST_STYLE ;
typedef enum _AM_WST_DRAWBGMODE {
AM_WST_DRAWBGMODE_Opaque,
AM_WST_DRAWBGMODE_Transparent
} AM_WST_DRAWBGMODE, *PAM_WST_DRAWBGMODE ;
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
//
// WST Decoder standard COM interface
//
DECLARE_INTERFACE_(IAMWstDecoder, IUnknown)
{
public:
//
// Decoder options to be used by apps
//
// What is the decoder's level
STDMETHOD(GetDecoderLevel)(THIS_ AM_WST_LEVEL *lpLevel) PURE ;
// STDMETHOD(SetDecoderLevel)(THIS_ AM_WST_LEVEL Level) PURE ;
// Which of the services is being currently used
STDMETHOD(GetCurrentService)(THIS_ AM_WST_SERVICE *lpService) PURE ;
// STDMETHOD(SetCurrentService)(THIS_ AM_WST_SERVICE Service) PURE ;
// Query/Set the service state (On/Off)
// supported state values are AM_WSTState_On and AM_WSTState_Off
STDMETHOD(GetServiceState)(THIS_ AM_WST_STATE *lpState) PURE ;
STDMETHOD(SetServiceState)(THIS_ AM_WST_STATE State) PURE ;
//
// Output options to be used by downstream filters
//
// What size, bitdepth etc should the output video be
STDMETHOD(GetOutputFormat)(THIS_ LPBITMAPINFOHEADER lpbmih) PURE ;
// GetOutputFormat() method, if successful, returns
// 1. S_FALSE if no output format has so far been defined by downstream filters
// 2. S_OK if an output format has already been defined by downstream filters
STDMETHOD(SetOutputFormat)(THIS_ LPBITMAPINFO lpbmi) PURE ;
// Specify physical color to be used in colorkeying the background
// for overlay mixing
STDMETHOD(GetBackgroundColor)(THIS_ DWORD *pdwPhysColor) PURE ;
STDMETHOD(SetBackgroundColor)(THIS_ DWORD dwPhysColor) PURE ;
// Specify if whole output bitmap should be redrawn for each sample
STDMETHOD(GetRedrawAlways)(THIS_ LPBOOL lpbOption) PURE ;
STDMETHOD(SetRedrawAlways)(THIS_ BOOL bOption) PURE ;
// Specify if the caption text background should be opaque/transparent
STDMETHOD(GetDrawBackgroundMode)(THIS_ AM_WST_DRAWBGMODE *lpMode) PURE ;
STDMETHOD(SetDrawBackgroundMode)(THIS_ AM_WST_DRAWBGMODE Mode) PURE ;
// supported mode values are AM_WST_DrawBGMode_Opaque and
// AM_WST_DrawBGMode_Transparent
STDMETHOD(SetAnswerMode)(THIS_ BOOL bAnswer) PURE ;
STDMETHOD(GetAnswerMode)(THIS_ BOOL* pbAnswer) PURE ;
STDMETHOD(SetHoldPage)(THIS_ BOOL bHoldPage) PURE ;
STDMETHOD(GetHoldPage)(THIS_ BOOL* pbHoldPage) PURE ;
STDMETHOD(GetCurrentPage)(THIS_ PAM_WST_PAGE pWstPage) PURE;
STDMETHOD(SetCurrentPage)(THIS_ AM_WST_PAGE WstPage) PURE;
} ;
#ifdef __cplusplus
}
#endif // __cplusplus
#endif // __IWSTDEC__

95
third_party/dx9_sdk/include/Mpeg2Bits.h vendored Normal file
View File

@ -0,0 +1,95 @@
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Module Name:
//
// Mpeg2Bits.h
//
// Abstract:
//
// This file defines the MPEG-2 section header bitfields. These are
// defined here instead of in mpegstructs.idl because of MIDL
// compiler conflicts with bitfield definitions.
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#pragma pack(push)
#pragma pack(1)
//
// PID structure
//
#ifdef __midl
typedef struct
{
WORD Bits;
} PID_BITS_MIDL;
#else
typedef struct
{
WORD Reserved : 3;
WORD ProgramId : 13;
} PID_BITS, *PPID_BITS;
#endif
//
// Generic MPEG packet header structure
//
#ifdef __midl
typedef struct
{
WORD Bits;
} MPEG_HEADER_BITS_MIDL;
#else
typedef struct
{
WORD SectionLength : 12;
WORD Reserved : 2;
WORD PrivateIndicator : 1;
WORD SectionSyntaxIndicator : 1;
} MPEG_HEADER_BITS, *PMPEG_HEADER_BITS;
#endif
//
// Long MPEG packet header structure
//
#ifdef __midl
typedef struct
{
BYTE Bits;
} MPEG_HEADER_VERSION_BITS_MIDL;
#else
typedef struct
{
BYTE CurrentNextIndicator : 1;
BYTE VersionNumber : 5;
BYTE Reserved : 2;
} MPEG_HEADER_VERSION_BITS, *PMPEG_HEADER_VERSION_BITS;
#endif
#pragma pack(pop)

View File

@ -0,0 +1,62 @@
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Module Name:
//
// MPEGError.h
//
// Abstract:
//
// Interface specific HRESULT error codes for MPEG-2 tables.
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
// Interface specific SUCCESS and ERROR macros
#define MAKE_S_ITF_HRESULT(x) MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, (x))
#define MAKE_E_ITF_HRESULT(x) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, (x))
// MPEG-2 base HRESULT code (must be at least 0x200)
const unsigned int MPEG2_BASE = 0x200;
// MPEG-2 Success HRESULTs
const HRESULT MPEG2_S_MORE_DATA_AVAILABLE = MAKE_S_ITF_HRESULT(MPEG2_BASE + 0);
const HRESULT MPEG2_S_NO_MORE_DATA_AVAILABLE = MAKE_S_ITF_HRESULT(MPEG2_BASE + 1);
const HRESULT MPEG2_S_SG_INFO_FOUND = MAKE_S_ITF_HRESULT(MPEG2_BASE + 2);
const HRESULT MPEG2_S_SG_INFO_NOT_FOUND = MAKE_S_ITF_HRESULT(MPEG2_BASE + 3);
const HRESULT MPEG2_S_MPE_INFO_FOUND = MAKE_S_ITF_HRESULT(MPEG2_BASE + 4);
const HRESULT MPEG2_S_MPE_INFO_NOT_FOUND = MAKE_S_ITF_HRESULT(MPEG2_BASE + 5);
const HRESULT MPEG2_S_NEW_MODULE_VERSION = MAKE_S_ITF_HRESULT(MPEG2_BASE + 6);
// MPEG-2 Error HRESULTs
const HRESULT MPEG2_E_UNINITIALIZED = MAKE_E_ITF_HRESULT(MPEG2_BASE + 0);
const HRESULT MPEG2_E_ALREADY_INITIALIZED = MAKE_E_ITF_HRESULT(MPEG2_BASE + 1);
const HRESULT MPEG2_E_OUT_OF_BOUNDS = MAKE_E_ITF_HRESULT(MPEG2_BASE + 2);
const HRESULT MPEG2_E_MALFORMED_TABLE = MAKE_E_ITF_HRESULT(MPEG2_BASE + 3);
const HRESULT MPEG2_E_UNDEFINED = MAKE_E_ITF_HRESULT(MPEG2_BASE + 4);
const HRESULT MPEG2_E_NOT_PRESENT = MAKE_E_ITF_HRESULT(MPEG2_BASE + 5);
const HRESULT MPEG2_E_SECTION_NOT_FOUND = MAKE_E_ITF_HRESULT(MPEG2_BASE + 6);
const HRESULT MPEG2_E_TX_STREAM_UNAVAILABLE = MAKE_E_ITF_HRESULT(MPEG2_BASE + 7);
const HRESULT MPEG2_E_SERVICE_ID_NOT_FOUND = MAKE_E_ITF_HRESULT(MPEG2_BASE + 8);
const HRESULT MPEG2_E_SERVICE_PMT_NOT_FOUND = MAKE_E_ITF_HRESULT(MPEG2_BASE + 9);
const HRESULT MPEG2_E_DSI_NOT_FOUND = MAKE_E_ITF_HRESULT(MPEG2_BASE + 10);
const HRESULT MPEG2_E_SERVER_UNAVAILABLE = MAKE_E_ITF_HRESULT(MPEG2_BASE + 11);
const HRESULT MPEG2_E_INVALID_CAROUSEL_ID = MAKE_E_ITF_HRESULT(MPEG2_BASE + 12);
const HRESULT MPEG2_E_MALFORMED_DSMCC_MESSAGE = MAKE_E_ITF_HRESULT(MPEG2_BASE + 13);
const HRESULT MPEG2_E_INVALID_SG_OBJECT_KIND = MAKE_E_ITF_HRESULT(MPEG2_BASE + 14);
const HRESULT MPEG2_E_OBJECT_NOT_FOUND = MAKE_E_ITF_HRESULT(MPEG2_BASE + 15);
const HRESULT MPEG2_E_OBJECT_KIND_NOT_A_DIRECTORY = MAKE_E_ITF_HRESULT(MPEG2_BASE + 16);
const HRESULT MPEG2_E_OBJECT_KIND_NOT_A_FILE = MAKE_E_ITF_HRESULT(MPEG2_BASE + 17);
const HRESULT MPEG2_E_FILE_OFFSET_TOO_BIG = MAKE_E_ITF_HRESULT(MPEG2_BASE + 18);
const HRESULT MPEG2_E_STREAM_STOPPED = MAKE_E_ITF_HRESULT(MPEG2_BASE + 19);
const HRESULT MPEG2_E_REGISTRY_ACCESS_FAILED = MAKE_E_ITF_HRESULT(MPEG2_BASE + 20);
const HRESULT MPEG2_E_INVALID_UDP_PORT = MAKE_E_ITF_HRESULT(MPEG2_BASE + 21);
const HRESULT MPEG2_E_DATA_SOURCE_FAILED = MAKE_E_ITF_HRESULT(MPEG2_BASE + 22);
const HRESULT MPEG2_E_DII_NOT_FOUND = MAKE_E_ITF_HRESULT(MPEG2_BASE + 23);
const HRESULT MPEG2_E_DSHOW_PIN_NOT_FOUND = MAKE_E_ITF_HRESULT(MPEG2_BASE + 24);
const HRESULT MPEG2_E_BUFFER_TOO_SMALL = MAKE_E_ITF_HRESULT(MPEG2_BASE + 25);
const HRESULT MPEG2_E_MISSING_SECTIONS = MAKE_E_ITF_HRESULT(MPEG2_BASE + 26);
const HRESULT MPEG2_E_TOO_MANY_SECTIONS = MAKE_E_ITF_HRESULT(MPEG2_BASE + 27);
const HRESULT MPEG2_E_NEXT_TABLE_OPS_NOT_AVAILABLE = MAKE_E_ITF_HRESULT(MPEG2_BASE + 28);

8367
third_party/dx9_sdk/include/Mstvca.h vendored Normal file

File diff suppressed because it is too large Load Diff

13130
third_party/dx9_sdk/include/Mstve.h vendored Normal file

File diff suppressed because it is too large Load Diff

2413
third_party/dx9_sdk/include/Msvidctl.h vendored Normal file

File diff suppressed because it is too large Load Diff

BIN
third_party/dx9_sdk/include/Msvidctl.tlb vendored Normal file

Binary file not shown.

16115
third_party/dx9_sdk/include/Segment.h vendored Normal file

File diff suppressed because it is too large Load Diff

BIN
third_party/dx9_sdk/include/Tuner.tlb vendored Normal file

Binary file not shown.

19
third_party/dx9_sdk/include/activecf.h vendored Normal file
View File

@ -0,0 +1,19 @@
//------------------------------------------------------------------------------
// File: ActiveCf.h
//
// Desc: Contains the data formats for the transfer of VfW4 filters via the
// clipboard.
//
// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#define CFSTR_VFW_FILTERLIST "Video for Windows 4 Filters"
typedef struct tagVFW_FILTERLIST{
UINT cFilters; // number of CLSIDs in aClsId
CLSID aClsId[1]; // ClsId of each filter
} VFW_FILTERLIST;

54
third_party/dx9_sdk/include/amaudio.h vendored Normal file
View File

@ -0,0 +1,54 @@
//------------------------------------------------------------------------------
// File: AMAudio.h
//
// Desc: Audio related definitions and interfaces for ActiveMovie.
//
// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef __AMAUDIO__
#define __AMAUDIO__
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
#include <mmsystem.h>
#include <dsound.h>
// This is the interface the audio renderer supports to give the application
// access to the direct sound object and the buffers it is using, to allow the
// application to use things like the 3D features of Direct Sound for the
// soundtrack of a movie being played with Active Movie.
// be nice to our friends in C
#undef INTERFACE
#define INTERFACE IAMDirectSound
DECLARE_INTERFACE_(IAMDirectSound,IUnknown)
{
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/* IAMDirectSound methods */
STDMETHOD(GetDirectSoundInterface)(THIS_ LPDIRECTSOUND *lplpds) PURE;
STDMETHOD(GetPrimaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER *lplpdsb) PURE;
STDMETHOD(GetSecondaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER *lplpdsb) PURE;
STDMETHOD(ReleaseDirectSoundInterface)(THIS_ LPDIRECTSOUND lpds) PURE;
STDMETHOD(ReleasePrimaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER lpdsb) PURE;
STDMETHOD(ReleaseSecondaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER lpdsb) PURE;
STDMETHOD(SetFocusWindow)(THIS_ HWND, BOOL) PURE ;
STDMETHOD(GetFocusWindow)(THIS_ HWND *, BOOL*) PURE ;
};
#ifdef __cplusplus
}
#endif // __cplusplus
#endif // __AMAUDIO__

38
third_party/dx9_sdk/include/amparse.h vendored Normal file
View File

@ -0,0 +1,38 @@
//------------------------------------------------------------------------------
// File: AMParse.h
//
// Desc: Interface to the parser to get current time. This is useful for
// multifile playback.
//
// Copyright (c) 1996-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef __AMPARSE__
#define __AMPARSE__
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
DEFINE_GUID(IID_IAMParse,
0xc47a3420, 0x005c, 0x11d2, 0x90, 0x38, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x98);
//
// Parser interface - supported by MPEG-2 splitter filter
//
DECLARE_INTERFACE_(IAMParse, IUnknown) {
STDMETHOD(GetParseTime) (THIS_
REFERENCE_TIME *prtCurrent
) PURE;
STDMETHOD(SetParseTime) (THIS_
REFERENCE_TIME rtCurrent
) PURE;
STDMETHOD(Flush) (THIS) PURE;
};
#ifdef __cplusplus
}
#endif // __cplusplus
#endif // __AMPARSE__

2295
third_party/dx9_sdk/include/amstream.h vendored Normal file

File diff suppressed because it is too large Load Diff

85
third_party/dx9_sdk/include/amva.h vendored Normal file
View File

@ -0,0 +1,85 @@
//------------------------------------------------------------------------------
// File: AMVA.h
//
// Desc: DirectShowMotionComp include file.
//
// Copyright (c) 1997-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef __AMVA_INCLUDED__
#define __AMVA_INCLUDED__
#ifdef __cplusplus
extern "C" {
#endif
#define AMVA_TYPEINDEX_OUTPUTFRAME 0xFFFFFFFF
// Flags for QueryRenderStatus
#define AMVA_QUERYRENDERSTATUSF_READ 0x00000001 // Query for read
// set this bit to 0
// if query for update
typedef struct _tag_AMVAUncompBufferInfo
{
DWORD dwMinNumSurfaces; // IN min number of surfaces to be allocated
DWORD dwMaxNumSurfaces; // IN max number of surfaces to be allocated
DDPIXELFORMAT ddUncompPixelFormat; // IN pixel format of surfaces to be allocated
} AMVAUncompBufferInfo, *LPAMVAUncompBufferInfo;
typedef struct _tag_AMVAUncompDataInfo
{
DWORD dwUncompWidth; // [in] width of uncompressed data
DWORD dwUncompHeight; // [in] height of uncompressed data
DDPIXELFORMAT ddUncompPixelFormat; // [in] pixel-format of uncompressed data
} AMVAUncompDataInfo, *LPAMVAUncompDataInfo;
typedef struct _tag_AMVAInternalMemInfo
{
DWORD dwScratchMemAlloc; // [out] amount of scratch memory will the hal allocate for its private use
} AMVAInternalMemInfo, *LPAMVAInternalMemInfo;
typedef struct _tag_AMVACompBufferInfo
{
DWORD dwNumCompBuffers; // [out] number of buffers reqd for compressed data
DWORD dwWidthToCreate; // [out] Width of surface to create
DWORD dwHeightToCreate; // [out] Height of surface to create
DWORD dwBytesToAllocate; // [out] Total number of bytes used by each surface
DDSCAPS2 ddCompCaps; // [out] caps to create surfaces to store compressed data
DDPIXELFORMAT ddPixelFormat; // [out] fourcc to create surfaces to store compressed data
} AMVACompBufferInfo, *LPAMVACompBufferInfo;
// Note that you are NOT allowed to store any pointer in pMiscData
typedef struct _tag_AMVABeginFrameInfo
{
DWORD dwDestSurfaceIndex; // IN destination buffer in which to decoding this frame
LPVOID pInputData; // IN pointer to misc data
DWORD dwSizeInputData; // IN size of other misc data to begin frame
LPVOID pOutputData; // OUT pointer to data which the VGA is going to fill
DWORD dwSizeOutputData; // IN size of data which the VGA is going to fill
} AMVABeginFrameInfo, *LPAMVABeginFrameInfo;
// Note that you are NOT allowed to store any pointer in pMiscData
typedef struct _tag_AMVAEndFrameInfo
{
DWORD dwSizeMiscData; // [in] size of other misc data to begin frame
LPVOID pMiscData; // [in] pointer to misc data
} AMVAEndFrameInfo, *LPAMVAEndFrameInfo;
typedef struct _tag_AMVABUFFERINFO
{
DWORD dwTypeIndex; // [in] Type of buffer
DWORD dwBufferIndex; // [in] Buffer index
DWORD dwDataOffset; // [in] offset of relevant data from the beginning of buffer
DWORD dwDataSize; // [in] size of relevant data
} AMVABUFFERINFO, *LPAMVABUFFERINFO;
#ifdef __cplusplus
};
#endif
#endif // _AMVA_INCLUDED

34
third_party/dx9_sdk/include/atsmedia.h vendored Normal file
View File

@ -0,0 +1,34 @@
//------------------------------------------------------------------------------
// File: ATSMedia.h
//
// Desc: Broadcast Driver Architecture Media Definitions for ATSC
//
// Copyright (c) 1996-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#if !defined(_KSMEDIA_)
#error KSMEDIA.H must be included before BDAMEDIA.H
#endif // !defined(_KSMEDIA_)
#if !defined(_BDAMEDIA_)
#error BDAMEDIA.H must be included before ATSCMEDIA.H
#endif // !defined(_KSMEDIA_)
#if !defined(_ATSCMEDIA_)
#define _ATSCMEDIA_
//===========================================================================
//
// ATSC Network Type
//
//===========================================================================
#define STATIC_BDANETWORKTYPE_ATSC\
0x71985f51, 0x1ca1, 0x11d3, 0x9c, 0xc8, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0
DEFINE_GUIDSTRUCT("71985F51-1CA1-11d3-9CC8-00C04F7971E0", BDANETWORKTYPE_ATSC);
#define BDANETWORKTYPE_ATSC DEFINE_GUIDNAMED(BDANETWORKTYPE_ATSC)
#endif // _ATSCMEDIA_

53
third_party/dx9_sdk/include/audevcod.h vendored Normal file
View File

@ -0,0 +1,53 @@
//------------------------------------------------------------------------------
// File: AudEvCod.h
//
// Desc: List of Audio device error event codes and the expected params.
//
// Copyright (c) 1999-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef __AUDEVCOD__
#define __AUDEVCOD__
#define EC_SND_DEVICE_ERROR_BASE 0x0200
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;
// Sound device error event codes
// ==============================
//
// All audio device error events are always passed on to the application, and are
// never processed by the filter graph
#define EC_SNDDEV_IN_ERROR (EC_SND_DEVICE_ERROR_BASE + 0x00)
#define EC_SNDDEV_OUT_ERROR (EC_SND_DEVICE_ERROR_BASE + 0x01)
// Parameters: ( DWORD, DWORD)
// lParam1 is an enum SND_DEVICE_ERROR which notifies the app how the device was
// being accessed when the failure occurred.
//
// lParam2 is the error returned from the sound device call.
//
#endif // __AUDEVCOD__

715
third_party/dx9_sdk/include/austream.h vendored Normal file
View File

@ -0,0 +1,715 @@
#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 6.00.0357 */
/* Compiler settings for austream.idl:
Oicf, W1, Zp8, env=Win32 (32b run)
protocol : dce , ms_ext, c_ext, robust
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING( )
/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include "rpc.h"
#include "rpcndr.h"
#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__
#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/
#ifndef __austream_h__
#define __austream_h__
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
/* Forward Declarations */
#ifndef __IAudioMediaStream_FWD_DEFINED__
#define __IAudioMediaStream_FWD_DEFINED__
typedef interface IAudioMediaStream IAudioMediaStream;
#endif /* __IAudioMediaStream_FWD_DEFINED__ */
#ifndef __IAudioStreamSample_FWD_DEFINED__
#define __IAudioStreamSample_FWD_DEFINED__
typedef interface IAudioStreamSample IAudioStreamSample;
#endif /* __IAudioStreamSample_FWD_DEFINED__ */
#ifndef __IMemoryData_FWD_DEFINED__
#define __IMemoryData_FWD_DEFINED__
typedef interface IMemoryData IMemoryData;
#endif /* __IMemoryData_FWD_DEFINED__ */
#ifndef __IAudioData_FWD_DEFINED__
#define __IAudioData_FWD_DEFINED__
typedef interface IAudioData IAudioData;
#endif /* __IAudioData_FWD_DEFINED__ */
/* header files for imported files */
#include "unknwn.h"
#include "mmstream.h"
#ifdef __cplusplus
extern "C"{
#endif
void * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void * );
/* interface __MIDL_itf_austream_0000 */
/* [local] */
//
// The following declarations within the 'if 0' block are dummy typedefs used to make
// the ddstream.idl file build. The actual definitions are contained in DDRAW.H
//
#if 0
typedef struct tWAVEFORMATEX WAVEFORMATEX;
#endif
extern RPC_IF_HANDLE __MIDL_itf_austream_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_austream_0000_v0_0_s_ifspec;
#ifndef __IAudioMediaStream_INTERFACE_DEFINED__
#define __IAudioMediaStream_INTERFACE_DEFINED__
/* interface IAudioMediaStream */
/* [unique][uuid][local][object] */
EXTERN_C const IID IID_IAudioMediaStream;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f7537560-a3be-11d0-8212-00c04fc32c45")
IAudioMediaStream : public IMediaStream
{
public:
virtual HRESULT STDMETHODCALLTYPE GetFormat(
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent) = 0;
virtual HRESULT STDMETHODCALLTYPE SetFormat(
/* [in] */ const WAVEFORMATEX *lpWaveFormat) = 0;
virtual HRESULT STDMETHODCALLTYPE CreateSample(
/* [in] */ IAudioData *pAudioData,
/* [in] */ DWORD dwFlags,
/* [out] */ IAudioStreamSample **ppSample) = 0;
};
#else /* C style interface */
typedef struct IAudioMediaStreamVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IAudioMediaStream * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IAudioMediaStream * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IAudioMediaStream * This);
HRESULT ( STDMETHODCALLTYPE *GetMultiMediaStream )(
IAudioMediaStream * This,
/* [out] */ IMultiMediaStream **ppMultiMediaStream);
HRESULT ( STDMETHODCALLTYPE *GetInformation )(
IAudioMediaStream * This,
/* [out] */ MSPID *pPurposeId,
/* [out] */ STREAM_TYPE *pType);
HRESULT ( STDMETHODCALLTYPE *SetSameFormat )(
IAudioMediaStream * This,
/* [in] */ IMediaStream *pStreamThatHasDesiredFormat,
/* [in] */ DWORD dwFlags);
HRESULT ( STDMETHODCALLTYPE *AllocateSample )(
IAudioMediaStream * This,
/* [in] */ DWORD dwFlags,
/* [out] */ IStreamSample **ppSample);
HRESULT ( STDMETHODCALLTYPE *CreateSharedSample )(
IAudioMediaStream * This,
/* [in] */ IStreamSample *pExistingSample,
/* [in] */ DWORD dwFlags,
/* [out] */ IStreamSample **ppNewSample);
HRESULT ( STDMETHODCALLTYPE *SendEndOfStream )(
IAudioMediaStream * This,
DWORD dwFlags);
HRESULT ( STDMETHODCALLTYPE *GetFormat )(
IAudioMediaStream * This,
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent);
HRESULT ( STDMETHODCALLTYPE *SetFormat )(
IAudioMediaStream * This,
/* [in] */ const WAVEFORMATEX *lpWaveFormat);
HRESULT ( STDMETHODCALLTYPE *CreateSample )(
IAudioMediaStream * This,
/* [in] */ IAudioData *pAudioData,
/* [in] */ DWORD dwFlags,
/* [out] */ IAudioStreamSample **ppSample);
END_INTERFACE
} IAudioMediaStreamVtbl;
interface IAudioMediaStream
{
CONST_VTBL struct IAudioMediaStreamVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IAudioMediaStream_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
#define IAudioMediaStream_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
#define IAudioMediaStream_Release(This) \
(This)->lpVtbl -> Release(This)
#define IAudioMediaStream_GetMultiMediaStream(This,ppMultiMediaStream) \
(This)->lpVtbl -> GetMultiMediaStream(This,ppMultiMediaStream)
#define IAudioMediaStream_GetInformation(This,pPurposeId,pType) \
(This)->lpVtbl -> GetInformation(This,pPurposeId,pType)
#define IAudioMediaStream_SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) \
(This)->lpVtbl -> SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags)
#define IAudioMediaStream_AllocateSample(This,dwFlags,ppSample) \
(This)->lpVtbl -> AllocateSample(This,dwFlags,ppSample)
#define IAudioMediaStream_CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) \
(This)->lpVtbl -> CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample)
#define IAudioMediaStream_SendEndOfStream(This,dwFlags) \
(This)->lpVtbl -> SendEndOfStream(This,dwFlags)
#define IAudioMediaStream_GetFormat(This,pWaveFormatCurrent) \
(This)->lpVtbl -> GetFormat(This,pWaveFormatCurrent)
#define IAudioMediaStream_SetFormat(This,lpWaveFormat) \
(This)->lpVtbl -> SetFormat(This,lpWaveFormat)
#define IAudioMediaStream_CreateSample(This,pAudioData,dwFlags,ppSample) \
(This)->lpVtbl -> CreateSample(This,pAudioData,dwFlags,ppSample)
#endif /* COBJMACROS */
#endif /* C style interface */
HRESULT STDMETHODCALLTYPE IAudioMediaStream_GetFormat_Proxy(
IAudioMediaStream * This,
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent);
void __RPC_STUB IAudioMediaStream_GetFormat_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAudioMediaStream_SetFormat_Proxy(
IAudioMediaStream * This,
/* [in] */ const WAVEFORMATEX *lpWaveFormat);
void __RPC_STUB IAudioMediaStream_SetFormat_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAudioMediaStream_CreateSample_Proxy(
IAudioMediaStream * This,
/* [in] */ IAudioData *pAudioData,
/* [in] */ DWORD dwFlags,
/* [out] */ IAudioStreamSample **ppSample);
void __RPC_STUB IAudioMediaStream_CreateSample_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
#endif /* __IAudioMediaStream_INTERFACE_DEFINED__ */
#ifndef __IAudioStreamSample_INTERFACE_DEFINED__
#define __IAudioStreamSample_INTERFACE_DEFINED__
/* interface IAudioStreamSample */
/* [unique][uuid][local][object] */
EXTERN_C const IID IID_IAudioStreamSample;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("345fee00-aba5-11d0-8212-00c04fc32c45")
IAudioStreamSample : public IStreamSample
{
public:
virtual HRESULT STDMETHODCALLTYPE GetAudioData(
/* [out] */ IAudioData **ppAudio) = 0;
};
#else /* C style interface */
typedef struct IAudioStreamSampleVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IAudioStreamSample * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IAudioStreamSample * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IAudioStreamSample * This);
HRESULT ( STDMETHODCALLTYPE *GetMediaStream )(
IAudioStreamSample * This,
/* [in] */ IMediaStream **ppMediaStream);
HRESULT ( STDMETHODCALLTYPE *GetSampleTimes )(
IAudioStreamSample * This,
/* [out] */ STREAM_TIME *pStartTime,
/* [out] */ STREAM_TIME *pEndTime,
/* [out] */ STREAM_TIME *pCurrentTime);
HRESULT ( STDMETHODCALLTYPE *SetSampleTimes )(
IAudioStreamSample * This,
/* [in] */ const STREAM_TIME *pStartTime,
/* [in] */ const STREAM_TIME *pEndTime);
HRESULT ( STDMETHODCALLTYPE *Update )(
IAudioStreamSample * This,
/* [in] */ DWORD dwFlags,
/* [in] */ HANDLE hEvent,
/* [in] */ PAPCFUNC pfnAPC,
/* [in] */ DWORD_PTR dwAPCData);
HRESULT ( STDMETHODCALLTYPE *CompletionStatus )(
IAudioStreamSample * This,
/* [in] */ DWORD dwFlags,
/* [in] */ DWORD dwMilliseconds);
HRESULT ( STDMETHODCALLTYPE *GetAudioData )(
IAudioStreamSample * This,
/* [out] */ IAudioData **ppAudio);
END_INTERFACE
} IAudioStreamSampleVtbl;
interface IAudioStreamSample
{
CONST_VTBL struct IAudioStreamSampleVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IAudioStreamSample_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
#define IAudioStreamSample_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
#define IAudioStreamSample_Release(This) \
(This)->lpVtbl -> Release(This)
#define IAudioStreamSample_GetMediaStream(This,ppMediaStream) \
(This)->lpVtbl -> GetMediaStream(This,ppMediaStream)
#define IAudioStreamSample_GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) \
(This)->lpVtbl -> GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime)
#define IAudioStreamSample_SetSampleTimes(This,pStartTime,pEndTime) \
(This)->lpVtbl -> SetSampleTimes(This,pStartTime,pEndTime)
#define IAudioStreamSample_Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) \
(This)->lpVtbl -> Update(This,dwFlags,hEvent,pfnAPC,dwAPCData)
#define IAudioStreamSample_CompletionStatus(This,dwFlags,dwMilliseconds) \
(This)->lpVtbl -> CompletionStatus(This,dwFlags,dwMilliseconds)
#define IAudioStreamSample_GetAudioData(This,ppAudio) \
(This)->lpVtbl -> GetAudioData(This,ppAudio)
#endif /* COBJMACROS */
#endif /* C style interface */
HRESULT STDMETHODCALLTYPE IAudioStreamSample_GetAudioData_Proxy(
IAudioStreamSample * This,
/* [out] */ IAudioData **ppAudio);
void __RPC_STUB IAudioStreamSample_GetAudioData_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
#endif /* __IAudioStreamSample_INTERFACE_DEFINED__ */
#ifndef __IMemoryData_INTERFACE_DEFINED__
#define __IMemoryData_INTERFACE_DEFINED__
/* interface IMemoryData */
/* [unique][uuid][local][object] */
EXTERN_C const IID IID_IMemoryData;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("327fc560-af60-11d0-8212-00c04fc32c45")
IMemoryData : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE SetBuffer(
/* [in] */ DWORD cbSize,
/* [in] */ BYTE *pbData,
/* [in] */ DWORD dwFlags) = 0;
virtual HRESULT STDMETHODCALLTYPE GetInfo(
/* [out] */ DWORD *pdwLength,
/* [out] */ BYTE **ppbData,
/* [out] */ DWORD *pcbActualData) = 0;
virtual HRESULT STDMETHODCALLTYPE SetActual(
/* [in] */ DWORD cbDataValid) = 0;
};
#else /* C style interface */
typedef struct IMemoryDataVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IMemoryData * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IMemoryData * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IMemoryData * This);
HRESULT ( STDMETHODCALLTYPE *SetBuffer )(
IMemoryData * This,
/* [in] */ DWORD cbSize,
/* [in] */ BYTE *pbData,
/* [in] */ DWORD dwFlags);
HRESULT ( STDMETHODCALLTYPE *GetInfo )(
IMemoryData * This,
/* [out] */ DWORD *pdwLength,
/* [out] */ BYTE **ppbData,
/* [out] */ DWORD *pcbActualData);
HRESULT ( STDMETHODCALLTYPE *SetActual )(
IMemoryData * This,
/* [in] */ DWORD cbDataValid);
END_INTERFACE
} IMemoryDataVtbl;
interface IMemoryData
{
CONST_VTBL struct IMemoryDataVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IMemoryData_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
#define IMemoryData_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
#define IMemoryData_Release(This) \
(This)->lpVtbl -> Release(This)
#define IMemoryData_SetBuffer(This,cbSize,pbData,dwFlags) \
(This)->lpVtbl -> SetBuffer(This,cbSize,pbData,dwFlags)
#define IMemoryData_GetInfo(This,pdwLength,ppbData,pcbActualData) \
(This)->lpVtbl -> GetInfo(This,pdwLength,ppbData,pcbActualData)
#define IMemoryData_SetActual(This,cbDataValid) \
(This)->lpVtbl -> SetActual(This,cbDataValid)
#endif /* COBJMACROS */
#endif /* C style interface */
HRESULT STDMETHODCALLTYPE IMemoryData_SetBuffer_Proxy(
IMemoryData * This,
/* [in] */ DWORD cbSize,
/* [in] */ BYTE *pbData,
/* [in] */ DWORD dwFlags);
void __RPC_STUB IMemoryData_SetBuffer_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemoryData_GetInfo_Proxy(
IMemoryData * This,
/* [out] */ DWORD *pdwLength,
/* [out] */ BYTE **ppbData,
/* [out] */ DWORD *pcbActualData);
void __RPC_STUB IMemoryData_GetInfo_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
HRESULT STDMETHODCALLTYPE IMemoryData_SetActual_Proxy(
IMemoryData * This,
/* [in] */ DWORD cbDataValid);
void __RPC_STUB IMemoryData_SetActual_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
#endif /* __IMemoryData_INTERFACE_DEFINED__ */
#ifndef __IAudioData_INTERFACE_DEFINED__
#define __IAudioData_INTERFACE_DEFINED__
/* interface IAudioData */
/* [unique][uuid][local][object] */
EXTERN_C const IID IID_IAudioData;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("54c719c0-af60-11d0-8212-00c04fc32c45")
IAudioData : public IMemoryData
{
public:
virtual HRESULT STDMETHODCALLTYPE GetFormat(
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent) = 0;
virtual HRESULT STDMETHODCALLTYPE SetFormat(
/* [in] */ const WAVEFORMATEX *lpWaveFormat) = 0;
};
#else /* C style interface */
typedef struct IAudioDataVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IAudioData * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IAudioData * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IAudioData * This);
HRESULT ( STDMETHODCALLTYPE *SetBuffer )(
IAudioData * This,
/* [in] */ DWORD cbSize,
/* [in] */ BYTE *pbData,
/* [in] */ DWORD dwFlags);
HRESULT ( STDMETHODCALLTYPE *GetInfo )(
IAudioData * This,
/* [out] */ DWORD *pdwLength,
/* [out] */ BYTE **ppbData,
/* [out] */ DWORD *pcbActualData);
HRESULT ( STDMETHODCALLTYPE *SetActual )(
IAudioData * This,
/* [in] */ DWORD cbDataValid);
HRESULT ( STDMETHODCALLTYPE *GetFormat )(
IAudioData * This,
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent);
HRESULT ( STDMETHODCALLTYPE *SetFormat )(
IAudioData * This,
/* [in] */ const WAVEFORMATEX *lpWaveFormat);
END_INTERFACE
} IAudioDataVtbl;
interface IAudioData
{
CONST_VTBL struct IAudioDataVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IAudioData_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
#define IAudioData_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
#define IAudioData_Release(This) \
(This)->lpVtbl -> Release(This)
#define IAudioData_SetBuffer(This,cbSize,pbData,dwFlags) \
(This)->lpVtbl -> SetBuffer(This,cbSize,pbData,dwFlags)
#define IAudioData_GetInfo(This,pdwLength,ppbData,pcbActualData) \
(This)->lpVtbl -> GetInfo(This,pdwLength,ppbData,pcbActualData)
#define IAudioData_SetActual(This,cbDataValid) \
(This)->lpVtbl -> SetActual(This,cbDataValid)
#define IAudioData_GetFormat(This,pWaveFormatCurrent) \
(This)->lpVtbl -> GetFormat(This,pWaveFormatCurrent)
#define IAudioData_SetFormat(This,lpWaveFormat) \
(This)->lpVtbl -> SetFormat(This,lpWaveFormat)
#endif /* COBJMACROS */
#endif /* C style interface */
HRESULT STDMETHODCALLTYPE IAudioData_GetFormat_Proxy(
IAudioData * This,
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent);
void __RPC_STUB IAudioData_GetFormat_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAudioData_SetFormat_Proxy(
IAudioData * This,
/* [in] */ const WAVEFORMATEX *lpWaveFormat);
void __RPC_STUB IAudioData_SetFormat_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
#endif /* __IAudioData_INTERFACE_DEFINED__ */
/* Additional Prototypes for ALL interfaces */
/* end of Additional Prototypes */
#ifdef __cplusplus
}
#endif
#endif

402
third_party/dx9_sdk/include/aviriff.h vendored Normal file
View File

@ -0,0 +1,402 @@
//------------------------------------------------------------------------------
// File: AVIRIFF.h
//
// Desc: Structures and defines for the RIFF AVI file format extended to
// handle very large/long files.
//
// Copyright (c) 1996-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
// Disable some compiler warnings
#pragma warning(disable: 4097 4511 4512 4514 4705)
#if !defined AVIRIFF_H
#define AVIRIFF_H
#if !defined NUMELMS
#define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
#endif
// all structures in this file are packed on word boundaries
//
#include <pshpack2.h>
/*
* heres the general layout of an AVI riff file (new format)
*
* RIFF (3F??????) AVI <- not more than 1 GB in size
* LIST (size) hdrl
* avih (0038)
* LIST (size) strl
* strh (0038)
* strf (????)
* indx (3ff8) <- size may vary, should be sector sized
* LIST (size) strl
* strh (0038)
* strf (????)
* indx (3ff8) <- size may vary, should be sector sized
* LIST (size) odml
* dmlh (????)
* JUNK (size) <- fill to align to sector - 12
* LIST (7f??????) movi <- aligned on sector - 12
* 00dc (size) <- sector aligned
* 01wb (size) <- sector aligned
* ix00 (size) <- sector aligned
* idx1 (00??????) <- sector aligned
* RIFF (7F??????) AVIX
* JUNK (size) <- fill to align to sector -12
* LIST (size) movi
* 00dc (size) <- sector aligned
* RIFF (7F??????) AVIX <- not more than 2GB in size
* JUNK (size) <- fill to align to sector - 12
* LIST (size) movi
* 00dc (size) <- sector aligned
*
*-===================================================================*/
//
// structures for manipulating RIFF headers
//
#define FCC(ch4) ((((DWORD)(ch4) & 0xFF) << 24) | \
(((DWORD)(ch4) & 0xFF00) << 8) | \
(((DWORD)(ch4) & 0xFF0000) >> 8) | \
(((DWORD)(ch4) & 0xFF000000) >> 24))
typedef struct _riffchunk {
FOURCC fcc;
DWORD cb;
} RIFFCHUNK, * LPRIFFCHUNK;
typedef struct _rifflist {
FOURCC fcc;
DWORD cb;
FOURCC fccListType;
} RIFFLIST, * LPRIFFLIST;
#define RIFFROUND(cb) ((cb) + ((cb)&1))
#define RIFFNEXT(pChunk) (LPRIFFCHUNK)((LPBYTE)(pChunk) \
+ sizeof(RIFFCHUNK) \
+ RIFFROUND(((LPRIFFCHUNK)pChunk)->cb))
//
// ==================== avi header structures ===========================
//
// main header for the avi file (compatibility header)
//
#define ckidMAINAVIHEADER FCC('avih')
typedef struct _avimainheader {
FOURCC fcc; // 'avih'
DWORD cb; // size of this structure -8
DWORD dwMicroSecPerFrame; // frame display rate (or 0L)
DWORD dwMaxBytesPerSec; // max. transfer rate
DWORD dwPaddingGranularity; // pad to multiples of this size; normally 2K.
DWORD dwFlags; // the ever-present flags
#define AVIF_HASINDEX 0x00000010 // Index at end of file?
#define AVIF_MUSTUSEINDEX 0x00000020
#define AVIF_ISINTERLEAVED 0x00000100
#define AVIF_TRUSTCKTYPE 0x00000800 // Use CKType to find key frames
#define AVIF_WASCAPTUREFILE 0x00010000
#define AVIF_COPYRIGHTED 0x00020000
DWORD dwTotalFrames; // # frames in first movi list
DWORD dwInitialFrames;
DWORD dwStreams;
DWORD dwSuggestedBufferSize;
DWORD dwWidth;
DWORD dwHeight;
DWORD dwReserved[4];
} AVIMAINHEADER;
#define ckidODML FCC('odml')
#define ckidAVIEXTHEADER FCC('dmlh')
typedef struct _aviextheader {
FOURCC fcc; // 'dmlh'
DWORD cb; // size of this structure -8
DWORD dwGrandFrames; // total number of frames in the file
DWORD dwFuture[61]; // to be defined later
} AVIEXTHEADER;
//
// structure of an AVI stream header riff chunk
//
#define ckidSTREAMLIST FCC('strl')
#ifndef ckidSTREAMHEADER
#define ckidSTREAMHEADER FCC('strh')
#endif
typedef struct _avistreamheader {
FOURCC fcc; // 'strh'
DWORD cb; // size of this structure - 8
FOURCC fccType; // stream type codes
#ifndef streamtypeVIDEO
#define streamtypeVIDEO FCC('vids')
#define streamtypeAUDIO FCC('auds')
#define streamtypeMIDI FCC('mids')
#define streamtypeTEXT FCC('txts')
#endif
FOURCC fccHandler;
DWORD dwFlags;
#define AVISF_DISABLED 0x00000001
#define AVISF_VIDEO_PALCHANGES 0x00010000
WORD wPriority;
WORD wLanguage;
DWORD dwInitialFrames;
DWORD dwScale;
DWORD dwRate; // dwRate/dwScale is stream tick rate in ticks/sec
DWORD dwStart;
DWORD dwLength;
DWORD dwSuggestedBufferSize;
DWORD dwQuality;
DWORD dwSampleSize;
struct {
short int left;
short int top;
short int right;
short int bottom;
} rcFrame;
} AVISTREAMHEADER;
//
// structure of an AVI stream format chunk
//
#ifndef ckidSTREAMFORMAT
#define ckidSTREAMFORMAT FCC('strf')
#endif
//
// avi stream formats are different for each stream type
//
// BITMAPINFOHEADER for video streams
// WAVEFORMATEX or PCMWAVEFORMAT for audio streams
// nothing for text streams
// nothing for midi streams
#pragma warning(disable:4200)
//
// structure of old style AVI index
//
#define ckidAVIOLDINDEX FCC('idx1')
typedef struct _avioldindex {
FOURCC fcc; // 'idx1'
DWORD cb; // size of this structure -8
struct _avioldindex_entry {
DWORD dwChunkId;
DWORD dwFlags;
#ifndef AVIIF_LIST
#define AVIIF_LIST 0x00000001
#define AVIIF_KEYFRAME 0x00000010
#endif
#define AVIIF_NO_TIME 0x00000100
#define AVIIF_COMPRESSOR 0x0FFF0000 // unused?
DWORD dwOffset; // offset of riff chunk header for the data
DWORD dwSize; // size of the data (excluding riff header size)
} aIndex[]; // size of this array
} AVIOLDINDEX;
//
// ============ structures for timecode in an AVI file =================
//
#ifndef TIMECODE_DEFINED
#define TIMECODE_DEFINED
// defined
// timecode time structure
//
typedef union _timecode {
struct {
WORD wFrameRate;
WORD wFrameFract;
LONG cFrames;
};
DWORDLONG qw;
} TIMECODE;
#endif // TIMECODE_DEFINED
#define TIMECODE_RATE_30DROP 0 // this MUST be zero
// struct for all the SMPTE timecode info
//
typedef struct _timecodedata {
TIMECODE time;
DWORD dwSMPTEflags;
DWORD dwUser;
} TIMECODEDATA;
// dwSMPTEflags masks/values
//
#define TIMECODE_SMPTE_BINARY_GROUP 0x07
#define TIMECODE_SMPTE_COLOR_FRAME 0x08
//
// ============ structures for new style AVI indexes =================
//
// index type codes
//
#define AVI_INDEX_OF_INDEXES 0x00
#define AVI_INDEX_OF_CHUNKS 0x01
#define AVI_INDEX_OF_TIMED_CHUNKS 0x02
#define AVI_INDEX_OF_SUB_2FIELD 0x03
#define AVI_INDEX_IS_DATA 0x80
// index subtype codes
//
#define AVI_INDEX_SUB_DEFAULT 0x00
// INDEX_OF_CHUNKS subtype codes
//
#define AVI_INDEX_SUB_2FIELD 0x01
// meta structure of all avi indexes
//
typedef struct _avimetaindex {
FOURCC fcc;
UINT cb;
WORD wLongsPerEntry;
BYTE bIndexSubType;
BYTE bIndexType;
DWORD nEntriesInUse;
DWORD dwChunkId;
DWORD dwReserved[3];
DWORD adwIndex[];
} AVIMETAINDEX;
#define STDINDEXSIZE 0x4000
#define NUMINDEX(wLongsPerEntry) ((STDINDEXSIZE-32)/4/(wLongsPerEntry))
#define NUMINDEXFILL(wLongsPerEntry) ((STDINDEXSIZE/4) - NUMINDEX(wLongsPerEntry))
// structure of a super index (INDEX_OF_INDEXES)
//
#define ckidAVISUPERINDEX FCC('indx')
typedef struct _avisuperindex {
FOURCC fcc; // 'indx'
UINT cb; // size of this structure
WORD wLongsPerEntry; // ==4
BYTE bIndexSubType; // ==0 (frame index) or AVI_INDEX_SUB_2FIELD
BYTE bIndexType; // ==AVI_INDEX_OF_INDEXES
DWORD nEntriesInUse; // offset of next unused entry in aIndex
DWORD dwChunkId; // chunk ID of chunks being indexed, (i.e. RGB8)
DWORD dwReserved[3]; // must be 0
struct _avisuperindex_entry {
DWORDLONG qwOffset; // 64 bit offset to sub index chunk
DWORD dwSize; // 32 bit size of sub index chunk
DWORD dwDuration; // time span of subindex chunk (in stream ticks)
} aIndex[NUMINDEX(4)];
} AVISUPERINDEX;
#define Valid_SUPERINDEX(pi) (*(DWORD *)(&((pi)->wLongsPerEntry)) == (4 | (AVI_INDEX_OF_INDEXES << 24)))
// struct of a standard index (AVI_INDEX_OF_CHUNKS)
//
typedef struct _avistdindex_entry {
DWORD dwOffset; // 32 bit offset to data (points to data, not riff header)
DWORD dwSize; // 31 bit size of data (does not include size of riff header), bit 31 is deltaframe bit
} AVISTDINDEX_ENTRY;
#define AVISTDINDEX_DELTAFRAME ( 0x80000000) // Delta frames have the high bit set
#define AVISTDINDEX_SIZEMASK (~0x80000000)
typedef struct _avistdindex {
FOURCC fcc; // 'indx' or '##ix'
UINT cb; // size of this structure
WORD wLongsPerEntry; // ==2
BYTE bIndexSubType; // ==0
BYTE bIndexType; // ==AVI_INDEX_OF_CHUNKS
DWORD nEntriesInUse; // offset of next unused entry in aIndex
DWORD dwChunkId; // chunk ID of chunks being indexed, (i.e. RGB8)
DWORDLONG qwBaseOffset; // base offset that all index intries are relative to
DWORD dwReserved_3; // must be 0
AVISTDINDEX_ENTRY aIndex[NUMINDEX(2)];
} AVISTDINDEX;
// struct of a time variant standard index (AVI_INDEX_OF_TIMED_CHUNKS)
//
typedef struct _avitimedindex_entry {
DWORD dwOffset; // 32 bit offset to data (points to data, not riff header)
DWORD dwSize; // 31 bit size of data (does not include size of riff header) (high bit is deltaframe bit)
DWORD dwDuration; // how much time the chunk should be played (in stream ticks)
} AVITIMEDINDEX_ENTRY;
typedef struct _avitimedindex {
FOURCC fcc; // 'indx' or '##ix'
UINT cb; // size of this structure
WORD wLongsPerEntry; // ==3
BYTE bIndexSubType; // ==0
BYTE bIndexType; // ==AVI_INDEX_OF_TIMED_CHUNKS
DWORD nEntriesInUse; // offset of next unused entry in aIndex
DWORD dwChunkId; // chunk ID of chunks being indexed, (i.e. RGB8)
DWORDLONG qwBaseOffset; // base offset that all index intries are relative to
DWORD dwReserved_3; // must be 0
AVITIMEDINDEX_ENTRY aIndex[NUMINDEX(3)];
DWORD adwTrailingFill[NUMINDEXFILL(3)]; // to align struct to correct size
} AVITIMEDINDEX;
// structure of a timecode stream
//
typedef struct _avitimecodeindex {
FOURCC fcc; // 'indx' or '##ix'
UINT cb; // size of this structure
WORD wLongsPerEntry; // ==4
BYTE bIndexSubType; // ==0
BYTE bIndexType; // ==AVI_INDEX_IS_DATA
DWORD nEntriesInUse; // offset of next unused entry in aIndex
DWORD dwChunkId; // 'time'
DWORD dwReserved[3]; // must be 0
TIMECODEDATA aIndex[NUMINDEX(sizeof(TIMECODEDATA)/sizeof(LONG))];
} AVITIMECODEINDEX;
// structure of a timecode discontinuity list (when wLongsPerEntry == 7)
//
typedef struct _avitcdlindex_entry {
DWORD dwTick; // stream tick time that maps to this timecode value
TIMECODE time;
DWORD dwSMPTEflags;
DWORD dwUser;
TCHAR szReelId[12];
} AVITCDLINDEX_ENTRY;
typedef struct _avitcdlindex {
FOURCC fcc; // 'indx' or '##ix'
UINT cb; // size of this structure
WORD wLongsPerEntry; // ==7 (must be 4 or more all 'tcdl' indexes
BYTE bIndexSubType; // ==0
BYTE bIndexType; // ==AVI_INDEX_IS_DATA
DWORD nEntriesInUse; // offset of next unused entry in aIndex
DWORD dwChunkId; // 'tcdl'
DWORD dwReserved[3]; // must be 0
AVITCDLINDEX_ENTRY aIndex[NUMINDEX(7)];
DWORD adwTrailingFill[NUMINDEXFILL(7)]; // to align struct to correct size
} AVITCDLINDEX;
typedef struct _avifieldindex_chunk {
FOURCC fcc; // 'ix##'
DWORD cb; // size of this structure
WORD wLongsPerEntry; // must be 3 (size of each entry in
// aIndex array)
BYTE bIndexSubType; // AVI_INDEX_2FIELD
BYTE bIndexType; // AVI_INDEX_OF_CHUNKS
DWORD nEntriesInUse; //
DWORD dwChunkId; // '##dc' or '##db'
DWORDLONG qwBaseOffset; // offsets in aIndex array are relative to this
DWORD dwReserved3; // must be 0
struct _avifieldindex_entry {
DWORD dwOffset;
DWORD dwSize; // size of all fields
// (bit 31 set for NON-keyframes)
DWORD dwOffsetField2; // offset to second field
} aIndex[ ];
} AVIFIELDINDEX, * PAVIFIELDINDEX;
#include <poppack.h>
#endif

332
third_party/dx9_sdk/include/basetsd.h vendored Normal file
View File

@ -0,0 +1,332 @@
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
basetsd.h
Abstract:
Type definitions for the basic sized types.
Author:
Revision History:
--*/
#ifndef _BASETSD_H_
#define _BASETSD_H_
#if _MSC_VER > 1000
#pragma once
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef signed char INT8, *PINT8;
typedef signed short INT16, *PINT16;
typedef signed int INT32, *PINT32;
typedef signed __int64 INT64, *PINT64;
typedef unsigned char UINT8, *PUINT8;
typedef unsigned short UINT16, *PUINT16;
typedef unsigned int UINT32, *PUINT32;
typedef unsigned __int64 UINT64, *PUINT64;
//
// The following types are guaranteed to be signed and 32 bits wide.
//
typedef signed int LONG32, *PLONG32;
//
// The following types are guaranteed to be unsigned and 32 bits wide.
//
typedef unsigned int ULONG32, *PULONG32;
typedef unsigned int DWORD32, *PDWORD32;
#if !defined(_W64)
#if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
#define _W64 __w64
#else
#define _W64
#endif
#endif
//
// The INT_PTR is guaranteed to be the same size as a pointer. Its
// size with change with pointer size (32/64). It should be used
// anywhere that a pointer is cast to an integer type. UINT_PTR is
// the unsigned variation.
//
// __int3264 is intrinsic to 64b MIDL but not to old MIDL or to C compiler.
//
#if ( 501 < __midl )
typedef [public] __int3264 INT_PTR, *PINT_PTR;
typedef [public] unsigned __int3264 UINT_PTR, *PUINT_PTR;
typedef [public] __int3264 LONG_PTR, *PLONG_PTR;
typedef [public] unsigned __int3264 ULONG_PTR, *PULONG_PTR;
#else // midl64
// old midl and C++ compiler
#if defined(_WIN64)
typedef __int64 INT_PTR, *PINT_PTR;
typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
typedef __int64 LONG_PTR, *PLONG_PTR;
typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
#define __int3264 __int64
#else
typedef _W64 int INT_PTR, *PINT_PTR;
typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
typedef _W64 long LONG_PTR, *PLONG_PTR;
typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;
#define __int3264 __int32
#endif
#endif // midl64
//
// HALF_PTR is half the size of a pointer it intended for use with
// within strcuture which contain a pointer and two small fields.
// UHALF_PTR is the unsigned variation.
//
#ifdef _WIN64
#define ADDRESS_TAG_BIT 0x40000000000UI64
typedef __int64 SHANDLE_PTR;
typedef unsigned __int64 HANDLE_PTR;
typedef unsigned int UHALF_PTR, *PUHALF_PTR;
typedef int HALF_PTR, *PHALF_PTR;
#if !defined(__midl)
__inline
unsigned long
HandleToULong(
const void *h
)
{
return((unsigned long) (ULONG_PTR) h );
}
__inline
long
HandleToLong(
const void *h
)
{
return((long) (LONG_PTR) h );
}
__inline
void *
ULongToHandle(
const unsigned long h
)
{
return((void *) (UINT_PTR) h );
}
__inline
void *
LongToHandle(
const long h
)
{
return((void *) (INT_PTR) h );
}
__inline
unsigned long
PtrToUlong(
const void *p
)
{
return((unsigned long) (ULONG_PTR) p );
}
__inline
unsigned int
PtrToUint(
const void *p
)
{
return((unsigned int) (UINT_PTR) p );
}
__inline
unsigned short
PtrToUshort(
const void *p
)
{
return((unsigned short) (unsigned long) (ULONG_PTR) p );
}
__inline
long
PtrToLong(
const void *p
)
{
return((long) (LONG_PTR) p );
}
__inline
int
PtrToInt(
const void *p
)
{
return((int) (INT_PTR) p );
}
__inline
short
PtrToShort(
const void *p
)
{
return((short) (long) (LONG_PTR) p );
}
__inline
void *
IntToPtr(
const int i
)
// Caution: IntToPtr() sign-extends the int value.
{
return( (void *)(INT_PTR)i );
}
__inline
void *
UIntToPtr(
const unsigned int ui
)
// Caution: UIntToPtr() zero-extends the unsigned int value.
{
return( (void *)(UINT_PTR)ui );
}
__inline
void *
LongToPtr(
const long l
)
// Caution: LongToPtr() sign-extends the long value.
{
return( (void *)(LONG_PTR)l );
}
__inline
void *
ULongToPtr(
const unsigned long ul
)
// Caution: ULongToPtr() zero-extends the unsigned long value.
{
return( (void *)(ULONG_PTR)ul );
}
#endif // !_midl
#else // !_WIN64
#define ADDRESS_TAG_BIT 0x80000000UL
typedef unsigned short UHALF_PTR, *PUHALF_PTR;
typedef short HALF_PTR, *PHALF_PTR;
typedef _W64 long SHANDLE_PTR;
typedef _W64 unsigned long HANDLE_PTR;
#define HandleToULong( h ) ((ULONG)(ULONG_PTR)(h) )
#define HandleToLong( h ) ((LONG)(LONG_PTR) (h) )
#define ULongToHandle( ul ) ((HANDLE)(ULONG_PTR) (ul) )
#define LongToHandle( h ) ((HANDLE)(LONG_PTR) (h) )
#define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) )
#define PtrToLong( p ) ((LONG)(LONG_PTR) (p) )
#define PtrToUint( p ) ((UINT)(UINT_PTR) (p) )
#define PtrToInt( p ) ((INT)(INT_PTR) (p) )
#define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) )
#define PtrToShort( p ) ((short)(LONG_PTR)(p) )
#define IntToPtr( i ) ((VOID *)(INT_PTR)((int)i))
#define UIntToPtr( ui ) ((VOID *)(UINT_PTR)((unsigned int)ui))
#define LongToPtr( l ) ((VOID *)(LONG_PTR)((long)l))
#define ULongToPtr( ul ) ((VOID *)(ULONG_PTR)((unsigned long)ul))
#endif // !_WIN64
#define HandleToUlong(h) HandleToULong(h)
#define UlongToHandle(ul) ULongToHandle(ul)
#define UlongToPtr(ul) ULongToPtr(ul)
#define UintToPtr(ui) UIntToPtr(ui)
#define MAXUINT_PTR (~((UINT_PTR)0))
#define MAXINT_PTR ((INT_PTR)(MAXUINT_PTR >> 1))
#define MININT_PTR (~MAXINT_PTR)
#define MAXULONG_PTR (~((ULONG_PTR)0))
#define MAXLONG_PTR ((LONG_PTR)(MAXULONG_PTR >> 1))
#define MINLONG_PTR (~MAXLONG_PTR)
#define MAXUHALF_PTR ((UHALF_PTR)~0)
#define MAXHALF_PTR ((HALF_PTR)(MAXUHALF_PTR >> 1))
#define MINHALF_PTR (~MAXHALF_PTR)
//
// SIZE_T used for counts or ranges which need to span the range of
// of a pointer. SSIZE_T is the signed variation.
//
typedef ULONG_PTR SIZE_T, *PSIZE_T;
typedef LONG_PTR SSIZE_T, *PSSIZE_T;
//
// Add Windows flavor DWORD_PTR types
//
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
//
// The following types are guaranteed to be signed and 64 bits wide.
//
typedef __int64 LONG64, *PLONG64;
//
// The following types are guaranteed to be unsigned and 64 bits wide.
//
typedef unsigned __int64 ULONG64, *PULONG64;
typedef unsigned __int64 DWORD64, *PDWORD64;
//
// Thread affinity.
//
typedef ULONG_PTR KAFFINITY;
typedef KAFFINITY *PKAFFINITY;
#ifdef __cplusplus
}
#endif
#endif // _BASETSD_H_

4096
third_party/dx9_sdk/include/bdaiface.h vendored Normal file

File diff suppressed because it is too large Load Diff

1554
third_party/dx9_sdk/include/bdamedia.h vendored Normal file

File diff suppressed because it is too large Load Diff

567
third_party/dx9_sdk/include/bdatypes.h vendored Normal file
View File

@ -0,0 +1,567 @@
//------------------------------------------------------------------------------
// File: BDATypes.h
//
// Desc: Typedefs and enums needed by both the WDM drivers and the user mode
// COM interfaces.
//
// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef _BDATYPES_
#define _BDATYPES_ 1
/* Utility Macros */
#define MIN_DIMENSION 1
#ifdef __midl
#define V1_ENUM [v1_enum]
#else
#define V1_ENUM
#endif
//===========================================================================
//
// BDA Topology Structures
//
//===========================================================================
typedef struct _BDA_TEMPLATE_CONNECTION
{
ULONG FromNodeType;
ULONG FromNodePinType;
ULONG ToNodeType;
ULONG ToNodePinType;
}BDA_TEMPLATE_CONNECTION, *PBDA_TEMPLATE_CONNECTION;
typedef struct _BDA_TEMPLATE_PIN_JOINT
{
ULONG uliTemplateConnection;
ULONG ulcInstancesMax;
}BDA_TEMPLATE_PIN_JOINT, *PBDA_TEMPLATE_PIN_JOINT;
//===========================================================================
//
// BDA Events
//
//===========================================================================
// In-band Event IDs
//
typedef enum {
BDA_EVENT_SIGNAL_LOSS = 0,
BDA_EVENT_SIGNAL_LOCK,
BDA_EVENT_DATA_START,
BDA_EVENT_DATA_STOP,
BDA_EVENT_CHANNEL_ACQUIRED,
BDA_EVENT_CHANNEL_LOST,
BDA_EVENT_CHANNEL_SOURCE_CHANGED,
BDA_EVENT_CHANNEL_ACTIVATED,
BDA_EVENT_CHANNEL_DEACTIVATED,
BDA_EVENT_SUBCHANNEL_ACQUIRED,
BDA_EVENT_SUBCHANNEL_LOST,
BDA_EVENT_SUBCHANNEL_SOURCE_CHANGED,
BDA_EVENT_SUBCHANNEL_ACTIVATED,
BDA_EVENT_SUBCHANNEL_DEACTIVATED,
BDA_EVENT_ACCESS_GRANTED,
BDA_EVENT_ACCESS_DENIED,
BDA_EVENT_OFFER_EXTENDED,
BDA_EVENT_PURCHASE_COMPLETED,
BDA_EVENT_SMART_CARD_INSERTED,
BDA_EVENT_SMART_CARD_REMOVED
} BDA_EVENT_ID, *PBDA_EVENT_ID;
//===========================================================================
//
// KSSTREAM_HEADER extensions for BDA
//
//===========================================================================
typedef struct tagKS_BDA_FRAME_INFO {
ULONG ExtendedHeaderSize; // Size of this extended header
DWORD dwFrameFlags; //
ULONG ulEvent; //
ULONG ulChannelNumber; //
ULONG ulSubchannelNumber; //
ULONG ulReason; //
} KS_BDA_FRAME_INFO, *PKS_BDA_FRAME_INFO;
//------------------------------------------------------------
//
// BDA Network Ethernet Filter Property Set
//
// {71985F43-1CA1-11d3-9CC8-00C04F7971E0}
//
typedef struct _BDA_ETHERNET_ADDRESS {
BYTE rgbAddress[6];
} BDA_ETHERNET_ADDRESS, *PBDA_ETHERNET_ADDRESS;
typedef struct _BDA_ETHERNET_ADDRESS_LIST {
ULONG ulcAddresses;
BDA_ETHERNET_ADDRESS rgAddressl[MIN_DIMENSION];
} BDA_ETHERNET_ADDRESS_LIST, * PBDA_ETHERNET_ADDRESS_LIST;
typedef enum {
BDA_PROMISCUOUS_MULTICAST = 0,
BDA_FILTERED_MULTICAST,
BDA_NO_MULTICAST
} BDA_MULTICAST_MODE, *PBDA_MULTICAST_MODE;
//------------------------------------------------------------
//
// BDA Network IPv4 Filter Property Set
//
// {71985F44-1CA1-11d3-9CC8-00C04F7971E0}
//
typedef struct _BDA_IPv4_ADDRESS {
BYTE rgbAddress[4];
} BDA_IPv4_ADDRESS, *PBDA_IPv4_ADDRESS;
typedef struct _BDA_IPv4_ADDRESS_LIST {
ULONG ulcAddresses;
BDA_IPv4_ADDRESS rgAddressl[MIN_DIMENSION];
} BDA_IPv4_ADDRESS_LIST, * PBDA_IPv4_ADDRESS_LIST;
//------------------------------------------------------------
//
// BDA Network IPv4 Filter Property Set
//
// {E1785A74-2A23-4fb3-9245-A8F88017EF33}
//
typedef struct _BDA_IPv6_ADDRESS {
BYTE rgbAddress[6];
} BDA_IPv6_ADDRESS, *PBDA_IPv6_ADDRESS;
typedef struct _BDA_IPv6_ADDRESS_LIST {
ULONG ulcAddresses;
BDA_IPv6_ADDRESS rgAddressl[MIN_DIMENSION];
} BDA_IPv6_ADDRESS_LIST, * PBDA_IPv6_ADDRESS_LIST;
//------------------------------------------------------------
//
//
// BDA Signal Property Set
//
// {D2F1644B-B409-11d2-BC69-00A0C9EE9E16}
//
typedef enum {
BDA_SIGNAL_UNAVAILABLE = 0,
BDA_SIGNAL_INACTIVE,
BDA_SIGNAL_ACTIVE
} BDA_SIGNAL_STATE, * PBDA_SIGNAL_STATE;
//------------------------------------------------------------
//
//
// BDA Change Sync Method Set
//
// {FD0A5AF3-B41D-11d2-9C95-00C04F7971E0}
//
typedef enum
{
BDA_CHANGES_COMPLETE = 0,
BDA_CHANGES_PENDING
} BDA_CHANGE_STATE, * PBDA_CHANGE_STATE;
//------------------------------------------------------------
//
//
// BDA Device Configuration Method Set
//
// {71985F45-1CA1-11d3-9CC8-00C04F7971E0}
//
//------------------------------------------------------------
//
//
// BDA Topology Property Set
//
// {A14EE835-0A23-11d3-9CC7-00C04F7971E0}
//
typedef struct _BDANODE_DESCRIPTOR
{
ULONG ulBdaNodeType; // The node type as it is used
// in the BDA template topology
GUID guidFunction; // GUID from BdaMedia.h describing
// the node's function (e.g.
// KSNODE_BDA_RF_TUNER)
GUID guidName; // GUID that can be use to look up
// a displayable name for the node.
} BDANODE_DESCRIPTOR, *PBDANODE_DESCRIPTOR;
//------------------------------------------------------------
//
//
// BDA Void Transform Property Set
//
// {71985F46-1CA1-11d3-9CC8-00C04F7971E0}
//
//------------------------------------------------------------
//
//
// BDA Null Transform Property Set
//
// {DDF15B0D-BD25-11d2-9CA0-00C04F7971E0}
//
//------------------------------------------------------------
//
//
// BDA Frequency Filter Property Set
//
// {71985F47-1CA1-11d3-9CC8-00C04F7971E0}
//
//------------------------------------------------------------
//
//
// BDA Autodemodulate Property Set
//
// {DDF15B12-BD25-11d2-9CA0-00C04F7971E0}
//
//------------------------------------------------------------
//
//
// BDA Table Section Property Set
//
// {516B99C5-971C-4aaf-B3F3-D9FDA8A15E16}
//
typedef struct _BDA_TABLE_SECTION
{
ULONG ulPrimarySectionId;
ULONG ulSecondarySectionId;
ULONG ulcbSectionLength;
ULONG argbSectionData[MIN_DIMENSION];
} BDA_TABLE_SECTION, *PBDA_TABLE_SECTION;
//------------------------------------------------------------
//
//
// BDA PID Filter Property Set
//
// {D0A67D65-08DF-4fec-8533-E5B550410B85}
//
//---------------------------------------------------------------------
// From IEnumPIDMap interface
//---------------------------------------------------------------------
typedef enum {
MEDIA_TRANSPORT_PACKET, // complete TS packet e.g. pass-through mode
MEDIA_ELEMENTARY_STREAM, // PES payloads; audio/video only
MEDIA_MPEG2_PSI, // PAT, PMT, CAT, Private
MEDIA_TRANSPORT_PAYLOAD // gathered TS packet payloads (PES packets, etc...)
} MEDIA_SAMPLE_CONTENT ;
typedef struct {
ULONG ulPID ;
MEDIA_SAMPLE_CONTENT MediaSampleContent ;
} PID_MAP ;
typedef struct _BDA_PID_MAP
{
MEDIA_SAMPLE_CONTENT MediaSampleContent;
ULONG ulcPIDs;
ULONG aulPIDs[MIN_DIMENSION];
} BDA_PID_MAP, *PBDA_PID_MAP;
typedef struct _BDA_PID_UNMAP
{
ULONG ulcPIDs;
ULONG aulPIDs[MIN_DIMENSION];
} BDA_PID_UNMAP, *PBDA_PID_UNMAP;
//------------------------------------------------------------
//
//
// BDA CA Property Set
//
// {B0693766-5278-4ec6-B9E1-3CE40560EF5A}
//
typedef struct _BDA_CA_MODULE_UI
{
ULONG ulFormat;
ULONG ulbcDesc;
ULONG ulDesc[MIN_DIMENSION];
} BDA_CA_MODULE_UI, *PBDA_CA_MODULE_UI;
typedef struct _BDA_PROGRAM_PID_LIST
{
ULONG ulProgramNumber;
ULONG ulcPIDs;
ULONG ulPID[MIN_DIMENSION];
} BDA_PROGRAM_PID_LIST, *PBDA_PROGRAM_PID_LIST;
//------------------------------------------------------------
//
//
// BDA CA Event Set
//
// {488C4CCC-B768-4129-8EB1-B00A071F9068}
//
//=============================================================
//
//
// BDA Tuning Model enumerations
//
//
//=============================================================
// system type for particular DVB Tuning Space instance
typedef enum DVBSystemType {
DVB_Cable,
DVB_Terrestrial,
DVB_Satellite,
} DVBSystemType;
//------------------------------------------------------------
//
// BDA Channel Tune Request
V1_ENUM enum {
BDA_UNDEFINED_CHANNEL = -1,
};
//------------------------------------------------------------
//
// BDA Component(substream)
//
typedef V1_ENUM enum ComponentCategory
{
CategoryNotSet = -1,
CategoryOther = 0,
CategoryVideo,
CategoryAudio,
CategoryText,
CategoryData,
} ComponentCategory;
// Component Status
typedef enum ComponentStatus
{
StatusActive,
StatusInactive,
StatusUnavailable,
} ComponentStatus;
//------------------------------------------------------------
//
// BDA MPEG2 Component Type
//
// from the MPEG2 specification
typedef V1_ENUM enum MPEG2StreamType {
BDA_UNITIALIZED_MPEG2STREAMTYPE = -1,
Reserved1 = 0x0,
ISO_IEC_11172_2_VIDEO = Reserved1 + 1,
ISO_IEC_13818_2_VIDEO = ISO_IEC_11172_2_VIDEO + 1,
ISO_IEC_11172_3_AUDIO = ISO_IEC_13818_2_VIDEO + 1,
ISO_IEC_13818_3_AUDIO = ISO_IEC_11172_3_AUDIO + 1,
ISO_IEC_13818_1_PRIVATE_SECTION = ISO_IEC_13818_3_AUDIO + 1,
ISO_IEC_13818_1_PES = ISO_IEC_13818_1_PRIVATE_SECTION + 1,
ISO_IEC_13522_MHEG = ISO_IEC_13818_1_PES + 1,
ANNEX_A_DSM_CC = ISO_IEC_13522_MHEG + 1,
ITU_T_REC_H_222_1 = ANNEX_A_DSM_CC + 1,
ISO_IEC_13818_6_TYPE_A = ITU_T_REC_H_222_1 + 1,
ISO_IEC_13818_6_TYPE_B = ISO_IEC_13818_6_TYPE_A + 1,
ISO_IEC_13818_6_TYPE_C = ISO_IEC_13818_6_TYPE_B + 1,
ISO_IEC_13818_6_TYPE_D = ISO_IEC_13818_6_TYPE_C + 1,
ISO_IEC_13818_1_AUXILIARY = ISO_IEC_13818_6_TYPE_D + 1,
ISO_IEC_13818_1_RESERVED = ISO_IEC_13818_1_AUXILIARY + 1,
USER_PRIVATE = ISO_IEC_13818_1_RESERVED + 1
} MPEG2StreamType;
//------------------------------------------------------------
//
// mpeg-2 transport stride format block; associated with media
// types MEDIATYPE_Stream/MEDIASUBTYPE_MPEG2_TRANSPORT_STRIDE;
// *all* format blocks associated with above media type *must*
// start with the MPEG2_TRANSPORT_STRIDE structure
//
typedef struct _MPEG2_TRANSPORT_STRIDE {
DWORD dwOffset ;
DWORD dwPacketLength ;
DWORD dwStride ;
} MPEG2_TRANSPORT_STRIDE, *PMPEG2_TRANSPORT_STRIDE ;
//------------------------------------------------------------
//
// BDA ATSC Component Type
//
//
// ATSC made AC3 Audio a descriptor instead of
// defining a user private stream type.
typedef enum ATSCComponentTypeFlags {
// bit flags for various component type properties
ATSCCT_AC3 = 0x00000001,
} ATSCComponentTypeFlags;
//------------------------------------------------------------
//
// BDA Locators
//
typedef V1_ENUM enum BinaryConvolutionCodeRate {
BDA_BCC_RATE_NOT_SET = -1,
BDA_BCC_RATE_NOT_DEFINED = 0,
BDA_BCC_RATE_1_2 = 1, // 1/2
BDA_BCC_RATE_2_3, // 2/3
BDA_BCC_RATE_3_4, // 3/4
BDA_BCC_RATE_3_5,
BDA_BCC_RATE_4_5,
BDA_BCC_RATE_5_6, // 5/6
BDA_BCC_RATE_5_11,
BDA_BCC_RATE_7_8, // 7/8
BDA_BCC_RATE_MAX,
} BinaryConvolutionCodeRate;
typedef V1_ENUM enum FECMethod {
BDA_FEC_METHOD_NOT_SET = -1,
BDA_FEC_METHOD_NOT_DEFINED = 0,
BDA_FEC_VITERBI = 1, // FEC is a Viterbi Binary Convolution.
BDA_FEC_RS_204_188, // The FEC is Reed-Solomon 204/188 (outer FEC)
BDA_FEC_MAX,
} FECMethod;
typedef V1_ENUM enum ModulationType {
BDA_MOD_NOT_SET = -1,
BDA_MOD_NOT_DEFINED = 0,
BDA_MOD_16QAM = 1,
BDA_MOD_32QAM,
BDA_MOD_64QAM,
BDA_MOD_80QAM,
BDA_MOD_96QAM,
BDA_MOD_112QAM,
BDA_MOD_128QAM,
BDA_MOD_160QAM,
BDA_MOD_192QAM,
BDA_MOD_224QAM,
BDA_MOD_256QAM,
BDA_MOD_320QAM,
BDA_MOD_384QAM,
BDA_MOD_448QAM,
BDA_MOD_512QAM,
BDA_MOD_640QAM,
BDA_MOD_768QAM,
BDA_MOD_896QAM,
BDA_MOD_1024QAM,
BDA_MOD_QPSK,
BDA_MOD_BPSK,
BDA_MOD_OQPSK,
BDA_MOD_8VSB,
BDA_MOD_16VSB,
BDA_MOD_ANALOG_AMPLITUDE, // std am
BDA_MOD_ANALOG_FREQUENCY, // std fm
BDA_MOD_MAX,
} ModulationType;
typedef V1_ENUM enum SpectralInversion {
BDA_SPECTRAL_INVERSION_NOT_SET = -1,
BDA_SPECTRAL_INVERSION_NOT_DEFINED = 0,
BDA_SPECTRAL_INVERSION_AUTOMATIC = 1,
BDA_SPECTRAL_INVERSION_NORMAL,
BDA_SPECTRAL_INVERSION_INVERTED,
BDA_SPECTRAL_INVERSION_MAX
} SpectralInversion;
typedef V1_ENUM enum Polarisation {
BDA_POLARISATION_NOT_SET = -1,
BDA_POLARISATION_NOT_DEFINED = 0,
BDA_POLARISATION_LINEAR_H = 1, // Linear horizontal polarisation
BDA_POLARISATION_LINEAR_V, // Linear vertical polarisation
BDA_POLARISATION_CIRCULAR_L, // Circular left polarisation
BDA_POLARISATION_CIRCULAR_R, // Circular right polarisation
BDA_POLARISATION_MAX,
} Polarisation;
typedef V1_ENUM enum GuardInterval {
BDA_GUARD_NOT_SET = -1,
BDA_GUARD_NOT_DEFINED = 0,
BDA_GUARD_1_32 = 1, // Guard interval is 1/32
BDA_GUARD_1_16, // Guard interval is 1/16
BDA_GUARD_1_8, // Guard interval is 1/8
BDA_GUARD_1_4, // Guard interval is 1/4
BDA_GUARD_MAX,
} GuardInterval;
typedef V1_ENUM enum HierarchyAlpha {
BDA_HALPHA_NOT_SET = -1,
BDA_HALPHA_NOT_DEFINED = 0,
BDA_HALPHA_1 = 1, // Hierarchy alpha is 1.
BDA_HALPHA_2, // Hierarchy alpha is 2.
BDA_HALPHA_4, // Hierarchy alpha is 4.
BDA_HALPHA_MAX,
} HierarchyAlpha;
typedef V1_ENUM enum TransmissionMode {
BDA_XMIT_MODE_NOT_SET = -1,
BDA_XMIT_MODE_NOT_DEFINED = 0,
BDA_XMIT_MODE_2K = 1, // Transmission uses 1705 carriers (use a 2K FFT)
BDA_XMIT_MODE_8K, // Transmission uses 6817 carriers (use an 8K FFT)
BDA_XMIT_MODE_MAX,
} TransmissionMode;
// Settings for Tuner Frequency
//
#define BDA_FREQUENCY_NOT_SET -1
#define BDA_FREQUENCY_NOT_DEFINED 0
// Settings for Tuner Range
//
// Tuner range refers to the setting of LNB High/Low as well as the
// selection of a satellite on a multiple satellite switch.
//
#define BDA_RANGE_NOT_SET -1
#define BDA_RANGE_NOT_DEFINED 0
// Settings for Tuner Channel Bandwidth
//
#define BDA_CHAN_BANDWITH_NOT_SET -1
#define BDA_CHAN_BANDWITH_NOT_DEFINED 0
// Settings for Tuner Frequency Multiplier
//
#define BDA_FREQUENCY_MULTIPLIER_NOT_SET -1
#define BDA_FREQUENCY_MULTIPLIER_NOT_DEFINED 0
#endif // not defined _BDATYPES_
// end of file -- bdatypes.h

26
third_party/dx9_sdk/include/comlite.h vendored Normal file
View File

@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// File: COMLite.h
//
// Desc: This header file is to provide a migration path for users of
// ActiveMovie betas 1 and 2.
//
// Copyright (c) 1992-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef _INC_COMLITE_
#define _INC_COMLITE_
#define QzInitialize CoInitialize
#define QzUninitialize CoUninitialize
#define QzFreeUnusedLibraries CoFreeUnusedLibraries
#define QzGetMalloc CoGetMalloc
#define QzTaskMemAlloc CoTaskMemAlloc
#define QzTaskMemRealloc CoTaskMemRealloc
#define QzTaskMemFree CoTaskMemFree
#define QzCreateFilterObject CoCreateInstance
#define QzCLSIDFromString CLSIDFromString
#define QzStringFromGUID2 StringFromGUID2
#endif // _INC_COMLITE_

5544
third_party/dx9_sdk/include/control.h vendored Normal file

File diff suppressed because it is too large Load Diff

1688
third_party/dx9_sdk/include/d3d.h vendored Normal file

File diff suppressed because it is too large Load Diff

1279
third_party/dx9_sdk/include/d3d8.h vendored Normal file

File diff suppressed because it is too large Load Diff

364
third_party/dx9_sdk/include/d3d8caps.h vendored Normal file
View File

@ -0,0 +1,364 @@
/*==========================================================================;
*
* Copyright (C) Microsoft Corporation. All Rights Reserved.
*
* File: d3d8caps.h
* Content: Direct3D capabilities include file
*
***************************************************************************/
#ifndef _D3D8CAPS_H
#define _D3D8CAPS_H
#ifndef DIRECT3D_VERSION
#define DIRECT3D_VERSION 0x0800
#endif //DIRECT3D_VERSION
// include this file content only if compiling for DX8 interfaces
#if(DIRECT3D_VERSION >= 0x0800)
#if defined(_X86_) || defined(_IA64_)
#pragma pack(4)
#endif
typedef struct _D3DCAPS8
{
/* Device Info */
D3DDEVTYPE DeviceType;
UINT AdapterOrdinal;
/* Caps from DX7 Draw */
DWORD Caps;
DWORD Caps2;
DWORD Caps3;
DWORD PresentationIntervals;
/* Cursor Caps */
DWORD CursorCaps;
/* 3D Device Caps */
DWORD DevCaps;
DWORD PrimitiveMiscCaps;
DWORD RasterCaps;
DWORD ZCmpCaps;
DWORD SrcBlendCaps;
DWORD DestBlendCaps;
DWORD AlphaCmpCaps;
DWORD ShadeCaps;
DWORD TextureCaps;
DWORD TextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DTexture8's
DWORD CubeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DCubeTexture8's
DWORD VolumeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DVolumeTexture8's
DWORD TextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DTexture8's
DWORD VolumeTextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DVolumeTexture8's
DWORD LineCaps; // D3DLINECAPS
DWORD MaxTextureWidth, MaxTextureHeight;
DWORD MaxVolumeExtent;
DWORD MaxTextureRepeat;
DWORD MaxTextureAspectRatio;
DWORD MaxAnisotropy;
float MaxVertexW;
float GuardBandLeft;
float GuardBandTop;
float GuardBandRight;
float GuardBandBottom;
float ExtentsAdjust;
DWORD StencilCaps;
DWORD FVFCaps;
DWORD TextureOpCaps;
DWORD MaxTextureBlendStages;
DWORD MaxSimultaneousTextures;
DWORD VertexProcessingCaps;
DWORD MaxActiveLights;
DWORD MaxUserClipPlanes;
DWORD MaxVertexBlendMatrices;
DWORD MaxVertexBlendMatrixIndex;
float MaxPointSize;
DWORD MaxPrimitiveCount; // max number of primitives per DrawPrimitive call
DWORD MaxVertexIndex;
DWORD MaxStreams;
DWORD MaxStreamStride; // max stride for SetStreamSource
DWORD VertexShaderVersion;
DWORD MaxVertexShaderConst; // number of vertex shader constant registers
DWORD PixelShaderVersion;
float MaxPixelShaderValue; // max value of pixel shader arithmetic component
} D3DCAPS8;
//
// BIT DEFINES FOR D3DCAPS8 DWORD MEMBERS
//
//
// Caps
//
#define D3DCAPS_READ_SCANLINE 0x00020000L
//
// Caps2
//
#define D3DCAPS2_NO2DDURING3DSCENE 0x00000002L
#define D3DCAPS2_FULLSCREENGAMMA 0x00020000L
#define D3DCAPS2_CANRENDERWINDOWED 0x00080000L
#define D3DCAPS2_CANCALIBRATEGAMMA 0x00100000L
#define D3DCAPS2_RESERVED 0x02000000L
#define D3DCAPS2_CANMANAGERESOURCE 0x10000000L
#define D3DCAPS2_DYNAMICTEXTURES 0x20000000L
//
// Caps3
//
#define D3DCAPS3_RESERVED 0x8000001fL
// Indicates that the device can respect the ALPHABLENDENABLE render state
// when fullscreen while using the FLIP or DISCARD swap effect.
// COPY and COPYVSYNC swap effects work whether or not this flag is set.
#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD 0x00000020L
//
// PresentationIntervals
//
#define D3DPRESENT_INTERVAL_DEFAULT 0x00000000L
#define D3DPRESENT_INTERVAL_ONE 0x00000001L
#define D3DPRESENT_INTERVAL_TWO 0x00000002L
#define D3DPRESENT_INTERVAL_THREE 0x00000004L
#define D3DPRESENT_INTERVAL_FOUR 0x00000008L
#define D3DPRESENT_INTERVAL_IMMEDIATE 0x80000000L
//
// CursorCaps
//
// Driver supports HW color cursor in at least hi-res modes(height >=400)
#define D3DCURSORCAPS_COLOR 0x00000001L
// Driver supports HW cursor also in low-res modes(height < 400)
#define D3DCURSORCAPS_LOWRES 0x00000002L
//
// DevCaps
//
#define D3DDEVCAPS_EXECUTESYSTEMMEMORY 0x00000010L /* Device can use execute buffers from system memory */
#define D3DDEVCAPS_EXECUTEVIDEOMEMORY 0x00000020L /* Device can use execute buffers from video memory */
#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY 0x00000040L /* Device can use TL buffers from system memory */
#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY 0x00000080L /* Device can use TL buffers from video memory */
#define D3DDEVCAPS_TEXTURESYSTEMMEMORY 0x00000100L /* Device can texture from system memory */
#define D3DDEVCAPS_TEXTUREVIDEOMEMORY 0x00000200L /* Device can texture from device memory */
#define D3DDEVCAPS_DRAWPRIMTLVERTEX 0x00000400L /* Device can draw TLVERTEX primitives */
#define D3DDEVCAPS_CANRENDERAFTERFLIP 0x00000800L /* Device can render without waiting for flip to complete */
#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM 0x00001000L /* Device can texture from nonlocal video memory */
#define D3DDEVCAPS_DRAWPRIMITIVES2 0x00002000L /* Device can support DrawPrimitives2 */
#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x00004000L /* Device is texturing from separate memory pools */
#define D3DDEVCAPS_DRAWPRIMITIVES2EX 0x00008000L /* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*/
#define D3DDEVCAPS_HWTRANSFORMANDLIGHT 0x00010000L /* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also */
#define D3DDEVCAPS_CANBLTSYSTONONLOCAL 0x00020000L /* Device supports a Tex Blt from system memory to non-local vidmem */
#define D3DDEVCAPS_HWRASTERIZATION 0x00080000L /* Device has HW acceleration for rasterization */
#define D3DDEVCAPS_PUREDEVICE 0x00100000L /* Device supports D3DCREATE_PUREDEVICE */
#define D3DDEVCAPS_QUINTICRTPATCHES 0x00200000L /* Device supports quintic Beziers and BSplines */
#define D3DDEVCAPS_RTPATCHES 0x00400000L /* Device supports Rect and Tri patches */
#define D3DDEVCAPS_RTPATCHHANDLEZERO 0x00800000L /* Indicates that RT Patches may be drawn efficiently using handle 0 */
#define D3DDEVCAPS_NPATCHES 0x01000000L /* Device supports N-Patches */
//
// PrimitiveMiscCaps
//
#define D3DPMISCCAPS_MASKZ 0x00000002L
#define D3DPMISCCAPS_LINEPATTERNREP 0x00000004L
#define D3DPMISCCAPS_CULLNONE 0x00000010L
#define D3DPMISCCAPS_CULLCW 0x00000020L
#define D3DPMISCCAPS_CULLCCW 0x00000040L
#define D3DPMISCCAPS_COLORWRITEENABLE 0x00000080L
#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS 0x00000100L /* Device correctly clips scaled points to clip planes */
#define D3DPMISCCAPS_CLIPTLVERTS 0x00000200L /* device will clip post-transformed vertex primitives */
#define D3DPMISCCAPS_TSSARGTEMP 0x00000400L /* device supports D3DTA_TEMP for temporary register */
#define D3DPMISCCAPS_BLENDOP 0x00000800L /* device supports D3DRS_BLENDOP */
#define D3DPMISCCAPS_NULLREFERENCE 0x00001000L /* Reference Device that doesnt render */
//
// LineCaps
//
#define D3DLINECAPS_TEXTURE 0x00000001L
#define D3DLINECAPS_ZTEST 0x00000002L
#define D3DLINECAPS_BLEND 0x00000004L
#define D3DLINECAPS_ALPHACMP 0x00000008L
#define D3DLINECAPS_FOG 0x00000010L
//
// RasterCaps
//
#define D3DPRASTERCAPS_DITHER 0x00000001L
#define D3DPRASTERCAPS_PAT 0x00000008L
#define D3DPRASTERCAPS_ZTEST 0x00000010L
#define D3DPRASTERCAPS_FOGVERTEX 0x00000080L
#define D3DPRASTERCAPS_FOGTABLE 0x00000100L
#define D3DPRASTERCAPS_ANTIALIASEDGES 0x00001000L
#define D3DPRASTERCAPS_MIPMAPLODBIAS 0x00002000L
#define D3DPRASTERCAPS_ZBIAS 0x00004000L
#define D3DPRASTERCAPS_ZBUFFERLESSHSR 0x00008000L
#define D3DPRASTERCAPS_FOGRANGE 0x00010000L
#define D3DPRASTERCAPS_ANISOTROPY 0x00020000L
#define D3DPRASTERCAPS_WBUFFER 0x00040000L
#define D3DPRASTERCAPS_WFOG 0x00100000L
#define D3DPRASTERCAPS_ZFOG 0x00200000L
#define D3DPRASTERCAPS_COLORPERSPECTIVE 0x00400000L /* Device iterates colors perspective correct */
#define D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE 0x00800000L
//
// ZCmpCaps, AlphaCmpCaps
//
#define D3DPCMPCAPS_NEVER 0x00000001L
#define D3DPCMPCAPS_LESS 0x00000002L
#define D3DPCMPCAPS_EQUAL 0x00000004L
#define D3DPCMPCAPS_LESSEQUAL 0x00000008L
#define D3DPCMPCAPS_GREATER 0x00000010L
#define D3DPCMPCAPS_NOTEQUAL 0x00000020L
#define D3DPCMPCAPS_GREATEREQUAL 0x00000040L
#define D3DPCMPCAPS_ALWAYS 0x00000080L
//
// SourceBlendCaps, DestBlendCaps
//
#define D3DPBLENDCAPS_ZERO 0x00000001L
#define D3DPBLENDCAPS_ONE 0x00000002L
#define D3DPBLENDCAPS_SRCCOLOR 0x00000004L
#define D3DPBLENDCAPS_INVSRCCOLOR 0x00000008L
#define D3DPBLENDCAPS_SRCALPHA 0x00000010L
#define D3DPBLENDCAPS_INVSRCALPHA 0x00000020L
#define D3DPBLENDCAPS_DESTALPHA 0x00000040L
#define D3DPBLENDCAPS_INVDESTALPHA 0x00000080L
#define D3DPBLENDCAPS_DESTCOLOR 0x00000100L
#define D3DPBLENDCAPS_INVDESTCOLOR 0x00000200L
#define D3DPBLENDCAPS_SRCALPHASAT 0x00000400L
#define D3DPBLENDCAPS_BOTHSRCALPHA 0x00000800L
#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x00001000L
//
// ShadeCaps
//
#define D3DPSHADECAPS_COLORGOURAUDRGB 0x00000008L
#define D3DPSHADECAPS_SPECULARGOURAUDRGB 0x00000200L
#define D3DPSHADECAPS_ALPHAGOURAUDBLEND 0x00004000L
#define D3DPSHADECAPS_FOGGOURAUD 0x00080000L
//
// TextureCaps
//
#define D3DPTEXTURECAPS_PERSPECTIVE 0x00000001L /* Perspective-correct texturing is supported */
#define D3DPTEXTURECAPS_POW2 0x00000002L /* Power-of-2 texture dimensions are required - applies to non-Cube/Volume textures only. */
#define D3DPTEXTURECAPS_ALPHA 0x00000004L /* Alpha in texture pixels is supported */
#define D3DPTEXTURECAPS_SQUAREONLY 0x00000020L /* Only square textures are supported */
#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040L /* Texture indices are not scaled by the texture size prior to interpolation */
#define D3DPTEXTURECAPS_ALPHAPALETTE 0x00000080L /* Device can draw alpha from texture palettes */
// Device can use non-POW2 textures if:
// 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage
// 2) D3DRS_WRAP(N) is zero for this texture's coordinates
// 3) mip mapping is not enabled (use magnification filter only)
#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL 0x00000100L
#define D3DPTEXTURECAPS_PROJECTED 0x00000400L /* Device can do D3DTTFF_PROJECTED */
#define D3DPTEXTURECAPS_CUBEMAP 0x00000800L /* Device can do cubemap textures */
#define D3DPTEXTURECAPS_VOLUMEMAP 0x00002000L /* Device can do volume textures */
#define D3DPTEXTURECAPS_MIPMAP 0x00004000L /* Device can do mipmapped textures */
#define D3DPTEXTURECAPS_MIPVOLUMEMAP 0x00008000L /* Device can do mipmapped volume textures */
#define D3DPTEXTURECAPS_MIPCUBEMAP 0x00010000L /* Device can do mipmapped cube maps */
#define D3DPTEXTURECAPS_CUBEMAP_POW2 0x00020000L /* Device requires that cubemaps be power-of-2 dimension */
#define D3DPTEXTURECAPS_VOLUMEMAP_POW2 0x00040000L /* Device requires that volume maps be power-of-2 dimension */
//
// TextureFilterCaps
//
#define D3DPTFILTERCAPS_MINFPOINT 0x00000100L /* Min Filter */
#define D3DPTFILTERCAPS_MINFLINEAR 0x00000200L
#define D3DPTFILTERCAPS_MINFANISOTROPIC 0x00000400L
#define D3DPTFILTERCAPS_MIPFPOINT 0x00010000L /* Mip Filter */
#define D3DPTFILTERCAPS_MIPFLINEAR 0x00020000L
#define D3DPTFILTERCAPS_MAGFPOINT 0x01000000L /* Mag Filter */
#define D3DPTFILTERCAPS_MAGFLINEAR 0x02000000L
#define D3DPTFILTERCAPS_MAGFANISOTROPIC 0x04000000L
#define D3DPTFILTERCAPS_MAGFAFLATCUBIC 0x08000000L
#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC 0x10000000L
//
// TextureAddressCaps
//
#define D3DPTADDRESSCAPS_WRAP 0x00000001L
#define D3DPTADDRESSCAPS_MIRROR 0x00000002L
#define D3DPTADDRESSCAPS_CLAMP 0x00000004L
#define D3DPTADDRESSCAPS_BORDER 0x00000008L
#define D3DPTADDRESSCAPS_INDEPENDENTUV 0x00000010L
#define D3DPTADDRESSCAPS_MIRRORONCE 0x00000020L
//
// StencilCaps
//
#define D3DSTENCILCAPS_KEEP 0x00000001L
#define D3DSTENCILCAPS_ZERO 0x00000002L
#define D3DSTENCILCAPS_REPLACE 0x00000004L
#define D3DSTENCILCAPS_INCRSAT 0x00000008L
#define D3DSTENCILCAPS_DECRSAT 0x00000010L
#define D3DSTENCILCAPS_INVERT 0x00000020L
#define D3DSTENCILCAPS_INCR 0x00000040L
#define D3DSTENCILCAPS_DECR 0x00000080L
//
// TextureOpCaps
//
#define D3DTEXOPCAPS_DISABLE 0x00000001L
#define D3DTEXOPCAPS_SELECTARG1 0x00000002L
#define D3DTEXOPCAPS_SELECTARG2 0x00000004L
#define D3DTEXOPCAPS_MODULATE 0x00000008L
#define D3DTEXOPCAPS_MODULATE2X 0x00000010L
#define D3DTEXOPCAPS_MODULATE4X 0x00000020L
#define D3DTEXOPCAPS_ADD 0x00000040L
#define D3DTEXOPCAPS_ADDSIGNED 0x00000080L
#define D3DTEXOPCAPS_ADDSIGNED2X 0x00000100L
#define D3DTEXOPCAPS_SUBTRACT 0x00000200L
#define D3DTEXOPCAPS_ADDSMOOTH 0x00000400L
#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA 0x00000800L
#define D3DTEXOPCAPS_BLENDTEXTUREALPHA 0x00001000L
#define D3DTEXOPCAPS_BLENDFACTORALPHA 0x00002000L
#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM 0x00004000L
#define D3DTEXOPCAPS_BLENDCURRENTALPHA 0x00008000L
#define D3DTEXOPCAPS_PREMODULATE 0x00010000L
#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR 0x00020000L
#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA 0x00040000L
#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR 0x00080000L
#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA 0x00100000L
#define D3DTEXOPCAPS_BUMPENVMAP 0x00200000L
#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE 0x00400000L
#define D3DTEXOPCAPS_DOTPRODUCT3 0x00800000L
#define D3DTEXOPCAPS_MULTIPLYADD 0x01000000L
#define D3DTEXOPCAPS_LERP 0x02000000L
//
// FVFCaps
//
#define D3DFVFCAPS_TEXCOORDCOUNTMASK 0x0000ffffL /* mask for texture coordinate count field */
#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x00080000L /* Device prefers that vertex elements not be stripped */
#define D3DFVFCAPS_PSIZE 0x00100000L /* Device can receive point size */
//
// VertexProcessingCaps
//
#define D3DVTXPCAPS_TEXGEN 0x00000001L /* device can do texgen */
#define D3DVTXPCAPS_MATERIALSOURCE7 0x00000002L /* device can do DX7-level colormaterialsource ops */
#define D3DVTXPCAPS_DIRECTIONALLIGHTS 0x00000008L /* device can do directional lights */
#define D3DVTXPCAPS_POSITIONALLIGHTS 0x00000010L /* device can do positional lights (includes point and spot) */
#define D3DVTXPCAPS_LOCALVIEWER 0x00000020L /* device can do local viewer */
#define D3DVTXPCAPS_TWEENING 0x00000040L /* device can do vertex tweening */
#define D3DVTXPCAPS_NO_VSDT_UBYTE4 0x00000080L /* device does not support D3DVSDT_UBYTE4 */
#pragma pack()
#endif /* (DIRECT3D_VERSION >= 0x0800) */
#endif /* _D3D8CAPS_H_ */

1684
third_party/dx9_sdk/include/d3d8types.h vendored Normal file

File diff suppressed because it is too large Load Diff

1667
third_party/dx9_sdk/include/d3d9.h vendored Normal file

File diff suppressed because it is too large Load Diff

476
third_party/dx9_sdk/include/d3d9caps.h vendored Normal file
View File

@ -0,0 +1,476 @@
/*==========================================================================;
*
* Copyright (C) Microsoft Corporation. All Rights Reserved.
*
* File: d3d9caps.h
* Content: Direct3D capabilities include file
*
***************************************************************************/
#ifndef _d3d9CAPS_H
#define _d3d9CAPS_H
#ifndef DIRECT3D_VERSION
#define DIRECT3D_VERSION 0x0900
#endif //DIRECT3D_VERSION
// include this file content only if compiling for DX9 interfaces
#if(DIRECT3D_VERSION >= 0x0900)
#if defined(_X86_) || defined(_IA64)
#pragma pack(4)
#endif
typedef struct _D3DVSHADERCAPS2_0
{
DWORD Caps;
INT DynamicFlowControlDepth;
INT NumTemps;
INT StaticFlowControlDepth;
} D3DVSHADERCAPS2_0;
#define D3DVS20CAPS_PREDICATION (1<<0)
#define D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH 24
#define D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH 0
#define D3DVS20_MAX_NUMTEMPS 32
#define D3DVS20_MIN_NUMTEMPS 12
#define D3DVS20_MAX_STATICFLOWCONTROLDEPTH 4
#define D3DVS20_MIN_STATICFLOWCONTROLDEPTH 1
typedef struct _D3DPSHADERCAPS2_0
{
DWORD Caps;
INT DynamicFlowControlDepth;
INT NumTemps;
INT StaticFlowControlDepth;
INT NumInstructionSlots;
} D3DPSHADERCAPS2_0;
#define D3DPS20CAPS_ARBITRARYSWIZZLE (1<<0)
#define D3DPS20CAPS_GRADIENTINSTRUCTIONS (1<<1)
#define D3DPS20CAPS_PREDICATION (1<<2)
#define D3DPS20CAPS_NODEPENDENTREADLIMIT (1<<3)
#define D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT (1<<4)
#define D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH 24
#define D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH 0
#define D3DPS20_MAX_NUMTEMPS 32
#define D3DPS20_MIN_NUMTEMPS 12
#define D3DPS20_MAX_STATICFLOWCONTROLDEPTH 4
#define D3DPS20_MIN_STATICFLOWCONTROLDEPTH 0
#define D3DPS20_MAX_NUMINSTRUCTIONSLOTS 512
#define D3DPS20_MIN_NUMINSTRUCTIONSLOTS 96
#define D3DMIN30SHADERINSTRUCTIONS 512
#define D3DMAX30SHADERINSTRUCTIONS 32768
typedef struct _D3DCAPS9
{
/* Device Info */
D3DDEVTYPE DeviceType;
UINT AdapterOrdinal;
/* Caps from DX7 Draw */
DWORD Caps;
DWORD Caps2;
DWORD Caps3;
DWORD PresentationIntervals;
/* Cursor Caps */
DWORD CursorCaps;
/* 3D Device Caps */
DWORD DevCaps;
DWORD PrimitiveMiscCaps;
DWORD RasterCaps;
DWORD ZCmpCaps;
DWORD SrcBlendCaps;
DWORD DestBlendCaps;
DWORD AlphaCmpCaps;
DWORD ShadeCaps;
DWORD TextureCaps;
DWORD TextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DTexture9's
DWORD CubeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DCubeTexture9's
DWORD VolumeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DVolumeTexture9's
DWORD TextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DTexture9's
DWORD VolumeTextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DVolumeTexture9's
DWORD LineCaps; // D3DLINECAPS
DWORD MaxTextureWidth, MaxTextureHeight;
DWORD MaxVolumeExtent;
DWORD MaxTextureRepeat;
DWORD MaxTextureAspectRatio;
DWORD MaxAnisotropy;
float MaxVertexW;
float GuardBandLeft;
float GuardBandTop;
float GuardBandRight;
float GuardBandBottom;
float ExtentsAdjust;
DWORD StencilCaps;
DWORD FVFCaps;
DWORD TextureOpCaps;
DWORD MaxTextureBlendStages;
DWORD MaxSimultaneousTextures;
DWORD VertexProcessingCaps;
DWORD MaxActiveLights;
DWORD MaxUserClipPlanes;
DWORD MaxVertexBlendMatrices;
DWORD MaxVertexBlendMatrixIndex;
float MaxPointSize;
DWORD MaxPrimitiveCount; // max number of primitives per DrawPrimitive call
DWORD MaxVertexIndex;
DWORD MaxStreams;
DWORD MaxStreamStride; // max stride for SetStreamSource
DWORD VertexShaderVersion;
DWORD MaxVertexShaderConst; // number of vertex shader constant registers
DWORD PixelShaderVersion;
float PixelShader1xMaxValue; // max value storable in registers of ps.1.x shaders
// Here are the DX9 specific ones
DWORD DevCaps2;
float MaxNpatchTessellationLevel;
DWORD Reserved5;
UINT MasterAdapterOrdinal; // ordinal of master adaptor for adapter group
UINT AdapterOrdinalInGroup; // ordinal inside the adapter group
UINT NumberOfAdaptersInGroup; // number of adapters in this adapter group (only if master)
DWORD DeclTypes; // Data types, supported in vertex declarations
DWORD NumSimultaneousRTs; // Will be at least 1
DWORD StretchRectFilterCaps; // Filter caps supported by StretchRect
D3DVSHADERCAPS2_0 VS20Caps;
D3DPSHADERCAPS2_0 PS20Caps;
DWORD VertexTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DTexture9's for texture, used in vertex shaders
DWORD MaxVShaderInstructionsExecuted; // maximum number of vertex shader instructions that can be executed
DWORD MaxPShaderInstructionsExecuted; // maximum number of pixel shader instructions that can be executed
DWORD MaxVertexShader30InstructionSlots;
DWORD MaxPixelShader30InstructionSlots;
} D3DCAPS9;
//
// BIT DEFINES FOR D3DCAPS9 DWORD MEMBERS
//
//
// Caps
//
#define D3DCAPS_READ_SCANLINE 0x00020000L
//
// Caps2
//
#define D3DCAPS2_FULLSCREENGAMMA 0x00020000L
#define D3DCAPS2_CANCALIBRATEGAMMA 0x00100000L
#define D3DCAPS2_RESERVED 0x02000000L
#define D3DCAPS2_CANMANAGERESOURCE 0x10000000L
#define D3DCAPS2_DYNAMICTEXTURES 0x20000000L
#define D3DCAPS2_CANAUTOGENMIPMAP 0x40000000L
//
// Caps3
//
#define D3DCAPS3_RESERVED 0x8000001fL
// Indicates that the device can respect the ALPHABLENDENABLE render state
// when fullscreen while using the FLIP or DISCARD swap effect.
// COPY and COPYVSYNC swap effects work whether or not this flag is set.
#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD 0x00000020L
// Indicates that the device can perform a gamma correction from
// a windowed back buffer containing linear content to the sRGB desktop.
#define D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION 0x00000080L
#define D3DCAPS3_COPY_TO_VIDMEM 0x00000100L /* Device can acclerate copies from sysmem to local vidmem */
#define D3DCAPS3_COPY_TO_SYSTEMMEM 0x00000200L /* Device can acclerate copies from local vidmem to sysmem */
//
// PresentationIntervals
//
#define D3DPRESENT_INTERVAL_DEFAULT 0x00000000L
#define D3DPRESENT_INTERVAL_ONE 0x00000001L
#define D3DPRESENT_INTERVAL_TWO 0x00000002L
#define D3DPRESENT_INTERVAL_THREE 0x00000004L
#define D3DPRESENT_INTERVAL_FOUR 0x00000008L
#define D3DPRESENT_INTERVAL_IMMEDIATE 0x80000000L
//
// CursorCaps
//
// Driver supports HW color cursor in at least hi-res modes(height >=400)
#define D3DCURSORCAPS_COLOR 0x00000001L
// Driver supports HW cursor also in low-res modes(height < 400)
#define D3DCURSORCAPS_LOWRES 0x00000002L
//
// DevCaps
//
#define D3DDEVCAPS_EXECUTESYSTEMMEMORY 0x00000010L /* Device can use execute buffers from system memory */
#define D3DDEVCAPS_EXECUTEVIDEOMEMORY 0x00000020L /* Device can use execute buffers from video memory */
#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY 0x00000040L /* Device can use TL buffers from system memory */
#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY 0x00000080L /* Device can use TL buffers from video memory */
#define D3DDEVCAPS_TEXTURESYSTEMMEMORY 0x00000100L /* Device can texture from system memory */
#define D3DDEVCAPS_TEXTUREVIDEOMEMORY 0x00000200L /* Device can texture from device memory */
#define D3DDEVCAPS_DRAWPRIMTLVERTEX 0x00000400L /* Device can draw TLVERTEX primitives */
#define D3DDEVCAPS_CANRENDERAFTERFLIP 0x00000800L /* Device can render without waiting for flip to complete */
#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM 0x00001000L /* Device can texture from nonlocal video memory */
#define D3DDEVCAPS_DRAWPRIMITIVES2 0x00002000L /* Device can support DrawPrimitives2 */
#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x00004000L /* Device is texturing from separate memory pools */
#define D3DDEVCAPS_DRAWPRIMITIVES2EX 0x00008000L /* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*/
#define D3DDEVCAPS_HWTRANSFORMANDLIGHT 0x00010000L /* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also */
#define D3DDEVCAPS_CANBLTSYSTONONLOCAL 0x00020000L /* Device supports a Tex Blt from system memory to non-local vidmem */
#define D3DDEVCAPS_HWRASTERIZATION 0x00080000L /* Device has HW acceleration for rasterization */
#define D3DDEVCAPS_PUREDEVICE 0x00100000L /* Device supports D3DCREATE_PUREDEVICE */
#define D3DDEVCAPS_QUINTICRTPATCHES 0x00200000L /* Device supports quintic Beziers and BSplines */
#define D3DDEVCAPS_RTPATCHES 0x00400000L /* Device supports Rect and Tri patches */
#define D3DDEVCAPS_RTPATCHHANDLEZERO 0x00800000L /* Indicates that RT Patches may be drawn efficiently using handle 0 */
#define D3DDEVCAPS_NPATCHES 0x01000000L /* Device supports N-Patches */
//
// PrimitiveMiscCaps
//
#define D3DPMISCCAPS_MASKZ 0x00000002L
#define D3DPMISCCAPS_CULLNONE 0x00000010L
#define D3DPMISCCAPS_CULLCW 0x00000020L
#define D3DPMISCCAPS_CULLCCW 0x00000040L
#define D3DPMISCCAPS_COLORWRITEENABLE 0x00000080L
#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS 0x00000100L /* Device correctly clips scaled points to clip planes */
#define D3DPMISCCAPS_CLIPTLVERTS 0x00000200L /* device will clip post-transformed vertex primitives */
#define D3DPMISCCAPS_TSSARGTEMP 0x00000400L /* device supports D3DTA_TEMP for temporary register */
#define D3DPMISCCAPS_BLENDOP 0x00000800L /* device supports D3DRS_BLENDOP */
#define D3DPMISCCAPS_NULLREFERENCE 0x00001000L /* Reference Device that doesnt render */
#define D3DPMISCCAPS_INDEPENDENTWRITEMASKS 0x00004000L /* Device supports independent write masks for MET or MRT */
#define D3DPMISCCAPS_PERSTAGECONSTANT 0x00008000L /* Device supports per-stage constants */
#define D3DPMISCCAPS_FOGANDSPECULARALPHA 0x00010000L /* Device supports separate fog and specular alpha (many devices
use the specular alpha channel to store fog factor) */
#define D3DPMISCCAPS_SEPARATEALPHABLEND 0x00020000L /* Device supports separate blend settings for the alpha channel */
#define D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS 0x00040000L /* Device supports different bit depths for MRT */
#define D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING 0x00080000L /* Device supports post-pixel shader operations for MRT */
#define D3DPMISCCAPS_FOGVERTEXCLAMPED 0x00100000L /* Device clamps fog blend factor per vertex */
//
// LineCaps
//
#define D3DLINECAPS_TEXTURE 0x00000001L
#define D3DLINECAPS_ZTEST 0x00000002L
#define D3DLINECAPS_BLEND 0x00000004L
#define D3DLINECAPS_ALPHACMP 0x00000008L
#define D3DLINECAPS_FOG 0x00000010L
#define D3DLINECAPS_ANTIALIAS 0x00000020L
//
// RasterCaps
//
#define D3DPRASTERCAPS_DITHER 0x00000001L
#define D3DPRASTERCAPS_ZTEST 0x00000010L
#define D3DPRASTERCAPS_FOGVERTEX 0x00000080L
#define D3DPRASTERCAPS_FOGTABLE 0x00000100L
#define D3DPRASTERCAPS_MIPMAPLODBIAS 0x00002000L
#define D3DPRASTERCAPS_ZBUFFERLESSHSR 0x00008000L
#define D3DPRASTERCAPS_FOGRANGE 0x00010000L
#define D3DPRASTERCAPS_ANISOTROPY 0x00020000L
#define D3DPRASTERCAPS_WBUFFER 0x00040000L
#define D3DPRASTERCAPS_WFOG 0x00100000L
#define D3DPRASTERCAPS_ZFOG 0x00200000L
#define D3DPRASTERCAPS_COLORPERSPECTIVE 0x00400000L /* Device iterates colors perspective correct */
#define D3DPRASTERCAPS_SCISSORTEST 0x01000000L
#define D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS 0x02000000L
#define D3DPRASTERCAPS_DEPTHBIAS 0x04000000L
#define D3DPRASTERCAPS_MULTISAMPLE_TOGGLE 0x08000000L
//
// ZCmpCaps, AlphaCmpCaps
//
#define D3DPCMPCAPS_NEVER 0x00000001L
#define D3DPCMPCAPS_LESS 0x00000002L
#define D3DPCMPCAPS_EQUAL 0x00000004L
#define D3DPCMPCAPS_LESSEQUAL 0x00000008L
#define D3DPCMPCAPS_GREATER 0x00000010L
#define D3DPCMPCAPS_NOTEQUAL 0x00000020L
#define D3DPCMPCAPS_GREATEREQUAL 0x00000040L
#define D3DPCMPCAPS_ALWAYS 0x00000080L
//
// SourceBlendCaps, DestBlendCaps
//
#define D3DPBLENDCAPS_ZERO 0x00000001L
#define D3DPBLENDCAPS_ONE 0x00000002L
#define D3DPBLENDCAPS_SRCCOLOR 0x00000004L
#define D3DPBLENDCAPS_INVSRCCOLOR 0x00000008L
#define D3DPBLENDCAPS_SRCALPHA 0x00000010L
#define D3DPBLENDCAPS_INVSRCALPHA 0x00000020L
#define D3DPBLENDCAPS_DESTALPHA 0x00000040L
#define D3DPBLENDCAPS_INVDESTALPHA 0x00000080L
#define D3DPBLENDCAPS_DESTCOLOR 0x00000100L
#define D3DPBLENDCAPS_INVDESTCOLOR 0x00000200L
#define D3DPBLENDCAPS_SRCALPHASAT 0x00000400L
#define D3DPBLENDCAPS_BOTHSRCALPHA 0x00000800L
#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x00001000L
#define D3DPBLENDCAPS_BLENDFACTOR 0x00002000L /* Supports both D3DBLEND_BLENDFACTOR and D3DBLEND_INVBLENDFACTOR */
//
// ShadeCaps
//
#define D3DPSHADECAPS_COLORGOURAUDRGB 0x00000008L
#define D3DPSHADECAPS_SPECULARGOURAUDRGB 0x00000200L
#define D3DPSHADECAPS_ALPHAGOURAUDBLEND 0x00004000L
#define D3DPSHADECAPS_FOGGOURAUD 0x00080000L
//
// TextureCaps
//
#define D3DPTEXTURECAPS_PERSPECTIVE 0x00000001L /* Perspective-correct texturing is supported */
#define D3DPTEXTURECAPS_POW2 0x00000002L /* Power-of-2 texture dimensions are required - applies to non-Cube/Volume textures only. */
#define D3DPTEXTURECAPS_ALPHA 0x00000004L /* Alpha in texture pixels is supported */
#define D3DPTEXTURECAPS_SQUAREONLY 0x00000020L /* Only square textures are supported */
#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040L /* Texture indices are not scaled by the texture size prior to interpolation */
#define D3DPTEXTURECAPS_ALPHAPALETTE 0x00000080L /* Device can draw alpha from texture palettes */
// Device can use non-POW2 textures if:
// 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage
// 2) D3DRS_WRAP(N) is zero for this texture's coordinates
// 3) mip mapping is not enabled (use magnification filter only)
#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL 0x00000100L
#define D3DPTEXTURECAPS_PROJECTED 0x00000400L /* Device can do D3DTTFF_PROJECTED */
#define D3DPTEXTURECAPS_CUBEMAP 0x00000800L /* Device can do cubemap textures */
#define D3DPTEXTURECAPS_VOLUMEMAP 0x00002000L /* Device can do volume textures */
#define D3DPTEXTURECAPS_MIPMAP 0x00004000L /* Device can do mipmapped textures */
#define D3DPTEXTURECAPS_MIPVOLUMEMAP 0x00008000L /* Device can do mipmapped volume textures */
#define D3DPTEXTURECAPS_MIPCUBEMAP 0x00010000L /* Device can do mipmapped cube maps */
#define D3DPTEXTURECAPS_CUBEMAP_POW2 0x00020000L /* Device requires that cubemaps be power-of-2 dimension */
#define D3DPTEXTURECAPS_VOLUMEMAP_POW2 0x00040000L /* Device requires that volume maps be power-of-2 dimension */
#define D3DPTEXTURECAPS_NOPROJECTEDBUMPENV 0x00200000L /* Device does not support projected bump env lookup operation
in programmable and fixed function pixel shaders */
//
// TextureFilterCaps, StretchRectFilterCaps
//
#define D3DPTFILTERCAPS_MINFPOINT 0x00000100L /* Min Filter */
#define D3DPTFILTERCAPS_MINFLINEAR 0x00000200L
#define D3DPTFILTERCAPS_MINFANISOTROPIC 0x00000400L
#define D3DPTFILTERCAPS_MINFPYRAMIDALQUAD 0x00000800L
#define D3DPTFILTERCAPS_MINFGAUSSIANQUAD 0x00001000L
#define D3DPTFILTERCAPS_MIPFPOINT 0x00010000L /* Mip Filter */
#define D3DPTFILTERCAPS_MIPFLINEAR 0x00020000L
#define D3DPTFILTERCAPS_MAGFPOINT 0x01000000L /* Mag Filter */
#define D3DPTFILTERCAPS_MAGFLINEAR 0x02000000L
#define D3DPTFILTERCAPS_MAGFANISOTROPIC 0x04000000L
#define D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD 0x08000000L
#define D3DPTFILTERCAPS_MAGFGAUSSIANQUAD 0x10000000L
//
// TextureAddressCaps
//
#define D3DPTADDRESSCAPS_WRAP 0x00000001L
#define D3DPTADDRESSCAPS_MIRROR 0x00000002L
#define D3DPTADDRESSCAPS_CLAMP 0x00000004L
#define D3DPTADDRESSCAPS_BORDER 0x00000008L
#define D3DPTADDRESSCAPS_INDEPENDENTUV 0x00000010L
#define D3DPTADDRESSCAPS_MIRRORONCE 0x00000020L
//
// StencilCaps
//
#define D3DSTENCILCAPS_KEEP 0x00000001L
#define D3DSTENCILCAPS_ZERO 0x00000002L
#define D3DSTENCILCAPS_REPLACE 0x00000004L
#define D3DSTENCILCAPS_INCRSAT 0x00000008L
#define D3DSTENCILCAPS_DECRSAT 0x00000010L
#define D3DSTENCILCAPS_INVERT 0x00000020L
#define D3DSTENCILCAPS_INCR 0x00000040L
#define D3DSTENCILCAPS_DECR 0x00000080L
#define D3DSTENCILCAPS_TWOSIDED 0x00000100L
//
// TextureOpCaps
//
#define D3DTEXOPCAPS_DISABLE 0x00000001L
#define D3DTEXOPCAPS_SELECTARG1 0x00000002L
#define D3DTEXOPCAPS_SELECTARG2 0x00000004L
#define D3DTEXOPCAPS_MODULATE 0x00000008L
#define D3DTEXOPCAPS_MODULATE2X 0x00000010L
#define D3DTEXOPCAPS_MODULATE4X 0x00000020L
#define D3DTEXOPCAPS_ADD 0x00000040L
#define D3DTEXOPCAPS_ADDSIGNED 0x00000080L
#define D3DTEXOPCAPS_ADDSIGNED2X 0x00000100L
#define D3DTEXOPCAPS_SUBTRACT 0x00000200L
#define D3DTEXOPCAPS_ADDSMOOTH 0x00000400L
#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA 0x00000800L
#define D3DTEXOPCAPS_BLENDTEXTUREALPHA 0x00001000L
#define D3DTEXOPCAPS_BLENDFACTORALPHA 0x00002000L
#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM 0x00004000L
#define D3DTEXOPCAPS_BLENDCURRENTALPHA 0x00008000L
#define D3DTEXOPCAPS_PREMODULATE 0x00010000L
#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR 0x00020000L
#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA 0x00040000L
#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR 0x00080000L
#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA 0x00100000L
#define D3DTEXOPCAPS_BUMPENVMAP 0x00200000L
#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE 0x00400000L
#define D3DTEXOPCAPS_DOTPRODUCT3 0x00800000L
#define D3DTEXOPCAPS_MULTIPLYADD 0x01000000L
#define D3DTEXOPCAPS_LERP 0x02000000L
//
// FVFCaps
//
#define D3DFVFCAPS_TEXCOORDCOUNTMASK 0x0000ffffL /* mask for texture coordinate count field */
#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x00080000L /* Device prefers that vertex elements not be stripped */
#define D3DFVFCAPS_PSIZE 0x00100000L /* Device can receive point size */
//
// VertexProcessingCaps
//
#define D3DVTXPCAPS_TEXGEN 0x00000001L /* device can do texgen */
#define D3DVTXPCAPS_MATERIALSOURCE7 0x00000002L /* device can do DX7-level colormaterialsource ops */
#define D3DVTXPCAPS_DIRECTIONALLIGHTS 0x00000008L /* device can do directional lights */
#define D3DVTXPCAPS_POSITIONALLIGHTS 0x00000010L /* device can do positional lights (includes point and spot) */
#define D3DVTXPCAPS_LOCALVIEWER 0x00000020L /* device can do local viewer */
#define D3DVTXPCAPS_TWEENING 0x00000040L /* device can do vertex tweening */
#define D3DVTXPCAPS_TEXGEN_SPHEREMAP 0x00000100L /* device supports D3DTSS_TCI_SPHEREMAP */
#define D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER 0x00000200L /* device does not support TexGen in non-local
viewer mode */
//
// DevCaps2
//
#define D3DDEVCAPS2_STREAMOFFSET 0x00000001L /* Device supports offsets in streams. Must be set by DX9 drivers */
#define D3DDEVCAPS2_DMAPNPATCH 0x00000002L /* Device supports displacement maps for N-Patches*/
#define D3DDEVCAPS2_ADAPTIVETESSRTPATCH 0x00000004L /* Device supports adaptive tesselation of RT-patches*/
#define D3DDEVCAPS2_ADAPTIVETESSNPATCH 0x00000008L /* Device supports adaptive tesselation of N-patches*/
#define D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES 0x00000010L /* Device supports StretchRect calls with a texture as the source*/
#define D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH 0x00000020L /* Device supports presampled displacement maps for N-Patches */
#define D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET 0x00000040L /* Vertex elements in a vertex declaration can share the same stream offset */
//
// DeclTypes
//
#define D3DDTCAPS_UBYTE4 0x00000001L
#define D3DDTCAPS_UBYTE4N 0x00000002L
#define D3DDTCAPS_SHORT2N 0x00000004L
#define D3DDTCAPS_SHORT4N 0x00000008L
#define D3DDTCAPS_USHORT2N 0x00000010L
#define D3DDTCAPS_USHORT4N 0x00000020L
#define D3DDTCAPS_UDEC3 0x00000040L
#define D3DDTCAPS_DEC3N 0x00000080L
#define D3DDTCAPS_FLOAT16_2 0x00000100L
#define D3DDTCAPS_FLOAT16_4 0x00000200L
#pragma pack()
#endif /* (DIRECT3D_VERSION >= 0x0900) */
#endif /* _d3d9CAPS_H_ */

1794
third_party/dx9_sdk/include/d3d9types.h vendored Normal file

File diff suppressed because it is too large Load Diff

601
third_party/dx9_sdk/include/d3dcaps.h vendored Normal file
View File

@ -0,0 +1,601 @@
/*==========================================================================;
*
* Copyright (C) Microsoft Corporation. All Rights Reserved.
*
* File: d3dcaps.h
* Content: Direct3D capabilities include file
*
***************************************************************************/
#ifndef _D3DCAPS_H
#define _D3DCAPS_H
/*
* Pull in DirectDraw include file automatically:
*/
#include "ddraw.h"
#ifndef DIRECT3D_VERSION
#define DIRECT3D_VERSION 0x0700
#endif
#if defined(_X86_) || defined(_IA64_)
#pragma pack(4)
#endif
/* Description of capabilities of transform */
typedef struct _D3DTRANSFORMCAPS {
DWORD dwSize;
DWORD dwCaps;
} D3DTRANSFORMCAPS, *LPD3DTRANSFORMCAPS;
#define D3DTRANSFORMCAPS_CLIP 0x00000001L /* Will clip whilst transforming */
/* Description of capabilities of lighting */
typedef struct _D3DLIGHTINGCAPS {
DWORD dwSize;
DWORD dwCaps; /* Lighting caps */
DWORD dwLightingModel; /* Lighting model - RGB or mono */
DWORD dwNumLights; /* Number of lights that can be handled */
} D3DLIGHTINGCAPS, *LPD3DLIGHTINGCAPS;
#define D3DLIGHTINGMODEL_RGB 0x00000001L
#define D3DLIGHTINGMODEL_MONO 0x00000002L
#define D3DLIGHTCAPS_POINT 0x00000001L /* Point lights supported */
#define D3DLIGHTCAPS_SPOT 0x00000002L /* Spot lights supported */
#define D3DLIGHTCAPS_DIRECTIONAL 0x00000004L /* Directional lights supported */
#if(DIRECT3D_VERSION < 0x700)
#define D3DLIGHTCAPS_PARALLELPOINT 0x00000008L /* Parallel point lights supported */
#endif
#if(DIRECT3D_VERSION < 0x500)
#define D3DLIGHTCAPS_GLSPOT 0x00000010L /* GL syle spot lights supported */
#endif
/* Description of capabilities for each primitive type */
typedef struct _D3DPrimCaps {
DWORD dwSize;
DWORD dwMiscCaps; /* Capability flags */
DWORD dwRasterCaps;
DWORD dwZCmpCaps;
DWORD dwSrcBlendCaps;
DWORD dwDestBlendCaps;
DWORD dwAlphaCmpCaps;
DWORD dwShadeCaps;
DWORD dwTextureCaps;
DWORD dwTextureFilterCaps;
DWORD dwTextureBlendCaps;
DWORD dwTextureAddressCaps;
DWORD dwStippleWidth; /* maximum width and height of */
DWORD dwStippleHeight; /* of supported stipple (up to 32x32) */
} D3DPRIMCAPS, *LPD3DPRIMCAPS;
/* D3DPRIMCAPS dwMiscCaps */
#define D3DPMISCCAPS_MASKPLANES 0x00000001L
#define D3DPMISCCAPS_MASKZ 0x00000002L
#define D3DPMISCCAPS_LINEPATTERNREP 0x00000004L
#define D3DPMISCCAPS_CONFORMANT 0x00000008L
#define D3DPMISCCAPS_CULLNONE 0x00000010L
#define D3DPMISCCAPS_CULLCW 0x00000020L
#define D3DPMISCCAPS_CULLCCW 0x00000040L
/* D3DPRIMCAPS dwRasterCaps */
#define D3DPRASTERCAPS_DITHER 0x00000001L
#define D3DPRASTERCAPS_ROP2 0x00000002L
#define D3DPRASTERCAPS_XOR 0x00000004L
#define D3DPRASTERCAPS_PAT 0x00000008L
#define D3DPRASTERCAPS_ZTEST 0x00000010L
#define D3DPRASTERCAPS_SUBPIXEL 0x00000020L
#define D3DPRASTERCAPS_SUBPIXELX 0x00000040L
#define D3DPRASTERCAPS_FOGVERTEX 0x00000080L
#define D3DPRASTERCAPS_FOGTABLE 0x00000100L
#define D3DPRASTERCAPS_STIPPLE 0x00000200L
#if(DIRECT3D_VERSION >= 0x0500)
#define D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT 0x00000400L
#define D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT 0x00000800L
#define D3DPRASTERCAPS_ANTIALIASEDGES 0x00001000L
#define D3DPRASTERCAPS_MIPMAPLODBIAS 0x00002000L
#define D3DPRASTERCAPS_ZBIAS 0x00004000L
#define D3DPRASTERCAPS_ZBUFFERLESSHSR 0x00008000L
#define D3DPRASTERCAPS_FOGRANGE 0x00010000L
#define D3DPRASTERCAPS_ANISOTROPY 0x00020000L
#endif /* DIRECT3D_VERSION >= 0x0500 */
#if(DIRECT3D_VERSION >= 0x0600)
#define D3DPRASTERCAPS_WBUFFER 0x00040000L
#define D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT 0x00080000L
#define D3DPRASTERCAPS_WFOG 0x00100000L
#define D3DPRASTERCAPS_ZFOG 0x00200000L
#endif /* DIRECT3D_VERSION >= 0x0600 */
/* D3DPRIMCAPS dwZCmpCaps, dwAlphaCmpCaps */
#define D3DPCMPCAPS_NEVER 0x00000001L
#define D3DPCMPCAPS_LESS 0x00000002L
#define D3DPCMPCAPS_EQUAL 0x00000004L
#define D3DPCMPCAPS_LESSEQUAL 0x00000008L
#define D3DPCMPCAPS_GREATER 0x00000010L
#define D3DPCMPCAPS_NOTEQUAL 0x00000020L
#define D3DPCMPCAPS_GREATEREQUAL 0x00000040L
#define D3DPCMPCAPS_ALWAYS 0x00000080L
/* D3DPRIMCAPS dwSourceBlendCaps, dwDestBlendCaps */
#define D3DPBLENDCAPS_ZERO 0x00000001L
#define D3DPBLENDCAPS_ONE 0x00000002L
#define D3DPBLENDCAPS_SRCCOLOR 0x00000004L
#define D3DPBLENDCAPS_INVSRCCOLOR 0x00000008L
#define D3DPBLENDCAPS_SRCALPHA 0x00000010L
#define D3DPBLENDCAPS_INVSRCALPHA 0x00000020L
#define D3DPBLENDCAPS_DESTALPHA 0x00000040L
#define D3DPBLENDCAPS_INVDESTALPHA 0x00000080L
#define D3DPBLENDCAPS_DESTCOLOR 0x00000100L
#define D3DPBLENDCAPS_INVDESTCOLOR 0x00000200L
#define D3DPBLENDCAPS_SRCALPHASAT 0x00000400L
#define D3DPBLENDCAPS_BOTHSRCALPHA 0x00000800L
#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x00001000L
/* D3DPRIMCAPS dwShadeCaps */
#define D3DPSHADECAPS_COLORFLATMONO 0x00000001L
#define D3DPSHADECAPS_COLORFLATRGB 0x00000002L
#define D3DPSHADECAPS_COLORGOURAUDMONO 0x00000004L
#define D3DPSHADECAPS_COLORGOURAUDRGB 0x00000008L
#define D3DPSHADECAPS_COLORPHONGMONO 0x00000010L
#define D3DPSHADECAPS_COLORPHONGRGB 0x00000020L
#define D3DPSHADECAPS_SPECULARFLATMONO 0x00000040L
#define D3DPSHADECAPS_SPECULARFLATRGB 0x00000080L
#define D3DPSHADECAPS_SPECULARGOURAUDMONO 0x00000100L
#define D3DPSHADECAPS_SPECULARGOURAUDRGB 0x00000200L
#define D3DPSHADECAPS_SPECULARPHONGMONO 0x00000400L
#define D3DPSHADECAPS_SPECULARPHONGRGB 0x00000800L
#define D3DPSHADECAPS_ALPHAFLATBLEND 0x00001000L
#define D3DPSHADECAPS_ALPHAFLATSTIPPLED 0x00002000L
#define D3DPSHADECAPS_ALPHAGOURAUDBLEND 0x00004000L
#define D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED 0x00008000L
#define D3DPSHADECAPS_ALPHAPHONGBLEND 0x00010000L
#define D3DPSHADECAPS_ALPHAPHONGSTIPPLED 0x00020000L
#define D3DPSHADECAPS_FOGFLAT 0x00040000L
#define D3DPSHADECAPS_FOGGOURAUD 0x00080000L
#define D3DPSHADECAPS_FOGPHONG 0x00100000L
/* D3DPRIMCAPS dwTextureCaps */
/*
* Perspective-correct texturing is supported
*/
#define D3DPTEXTURECAPS_PERSPECTIVE 0x00000001L
/*
* Power-of-2 texture dimensions are required
*/
#define D3DPTEXTURECAPS_POW2 0x00000002L
/*
* Alpha in texture pixels is supported
*/
#define D3DPTEXTURECAPS_ALPHA 0x00000004L
/*
* Color-keyed textures are supported
*/
#define D3DPTEXTURECAPS_TRANSPARENCY 0x00000008L
/*
* obsolete, see D3DPTADDRESSCAPS_BORDER
*/
#define D3DPTEXTURECAPS_BORDER 0x00000010L
/*
* Only square textures are supported
*/
#define D3DPTEXTURECAPS_SQUAREONLY 0x00000020L
#if(DIRECT3D_VERSION >= 0x0600)
/*
* Texture indices are not scaled by the texture size prior
* to interpolation.
*/
#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040L
/*
* Device can draw alpha from texture palettes
*/
#define D3DPTEXTURECAPS_ALPHAPALETTE 0x00000080L
/*
* Device can use non-POW2 textures if:
* 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage
* 2) D3DRS_WRAP(N) is zero for this texture's coordinates
* 3) mip mapping is not enabled (use magnification filter only)
*/
#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL 0x00000100L
#endif /* DIRECT3D_VERSION >= 0x0600 */
#if(DIRECT3D_VERSION >= 0x0700)
// 0x00000200L unused
/*
* Device can divide transformed texture coordinates by the
* COUNTth texture coordinate (can do D3DTTFF_PROJECTED)
*/
#define D3DPTEXTURECAPS_PROJECTED 0x00000400L
/*
* Device can do cubemap textures
*/
#define D3DPTEXTURECAPS_CUBEMAP 0x00000800L
#define D3DPTEXTURECAPS_COLORKEYBLEND 0x00001000L
#endif /* DIRECT3D_VERSION >= 0x0700 */
/* D3DPRIMCAPS dwTextureFilterCaps */
#define D3DPTFILTERCAPS_NEAREST 0x00000001L
#define D3DPTFILTERCAPS_LINEAR 0x00000002L
#define D3DPTFILTERCAPS_MIPNEAREST 0x00000004L
#define D3DPTFILTERCAPS_MIPLINEAR 0x00000008L
#define D3DPTFILTERCAPS_LINEARMIPNEAREST 0x00000010L
#define D3DPTFILTERCAPS_LINEARMIPLINEAR 0x00000020L
#if(DIRECT3D_VERSION >= 0x0600)
/* Device3 Min Filter */
#define D3DPTFILTERCAPS_MINFPOINT 0x00000100L
#define D3DPTFILTERCAPS_MINFLINEAR 0x00000200L
#define D3DPTFILTERCAPS_MINFANISOTROPIC 0x00000400L
/* Device3 Mip Filter */
#define D3DPTFILTERCAPS_MIPFPOINT 0x00010000L
#define D3DPTFILTERCAPS_MIPFLINEAR 0x00020000L
/* Device3 Mag Filter */
#define D3DPTFILTERCAPS_MAGFPOINT 0x01000000L
#define D3DPTFILTERCAPS_MAGFLINEAR 0x02000000L
#define D3DPTFILTERCAPS_MAGFANISOTROPIC 0x04000000L
#define D3DPTFILTERCAPS_MAGFAFLATCUBIC 0x08000000L
#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC 0x10000000L
#endif /* DIRECT3D_VERSION >= 0x0600 */
/* D3DPRIMCAPS dwTextureBlendCaps */
#define D3DPTBLENDCAPS_DECAL 0x00000001L
#define D3DPTBLENDCAPS_MODULATE 0x00000002L
#define D3DPTBLENDCAPS_DECALALPHA 0x00000004L
#define D3DPTBLENDCAPS_MODULATEALPHA 0x00000008L
#define D3DPTBLENDCAPS_DECALMASK 0x00000010L
#define D3DPTBLENDCAPS_MODULATEMASK 0x00000020L
#define D3DPTBLENDCAPS_COPY 0x00000040L
#if(DIRECT3D_VERSION >= 0x0500)
#define D3DPTBLENDCAPS_ADD 0x00000080L
#endif /* DIRECT3D_VERSION >= 0x0500 */
/* D3DPRIMCAPS dwTextureAddressCaps */
#define D3DPTADDRESSCAPS_WRAP 0x00000001L
#define D3DPTADDRESSCAPS_MIRROR 0x00000002L
#define D3DPTADDRESSCAPS_CLAMP 0x00000004L
#if(DIRECT3D_VERSION >= 0x0500)
#define D3DPTADDRESSCAPS_BORDER 0x00000008L
#define D3DPTADDRESSCAPS_INDEPENDENTUV 0x00000010L
#endif /* DIRECT3D_VERSION >= 0x0500 */
#if(DIRECT3D_VERSION >= 0x0600)
/* D3DDEVICEDESC dwStencilCaps */
#define D3DSTENCILCAPS_KEEP 0x00000001L
#define D3DSTENCILCAPS_ZERO 0x00000002L
#define D3DSTENCILCAPS_REPLACE 0x00000004L
#define D3DSTENCILCAPS_INCRSAT 0x00000008L
#define D3DSTENCILCAPS_DECRSAT 0x00000010L
#define D3DSTENCILCAPS_INVERT 0x00000020L
#define D3DSTENCILCAPS_INCR 0x00000040L
#define D3DSTENCILCAPS_DECR 0x00000080L
/* D3DDEVICEDESC dwTextureOpCaps */
#define D3DTEXOPCAPS_DISABLE 0x00000001L
#define D3DTEXOPCAPS_SELECTARG1 0x00000002L
#define D3DTEXOPCAPS_SELECTARG2 0x00000004L
#define D3DTEXOPCAPS_MODULATE 0x00000008L
#define D3DTEXOPCAPS_MODULATE2X 0x00000010L
#define D3DTEXOPCAPS_MODULATE4X 0x00000020L
#define D3DTEXOPCAPS_ADD 0x00000040L
#define D3DTEXOPCAPS_ADDSIGNED 0x00000080L
#define D3DTEXOPCAPS_ADDSIGNED2X 0x00000100L
#define D3DTEXOPCAPS_SUBTRACT 0x00000200L
#define D3DTEXOPCAPS_ADDSMOOTH 0x00000400L
#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA 0x00000800L
#define D3DTEXOPCAPS_BLENDTEXTUREALPHA 0x00001000L
#define D3DTEXOPCAPS_BLENDFACTORALPHA 0x00002000L
#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM 0x00004000L
#define D3DTEXOPCAPS_BLENDCURRENTALPHA 0x00008000L
#define D3DTEXOPCAPS_PREMODULATE 0x00010000L
#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR 0x00020000L
#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA 0x00040000L
#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR 0x00080000L
#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA 0x00100000L
#define D3DTEXOPCAPS_BUMPENVMAP 0x00200000L
#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE 0x00400000L
#define D3DTEXOPCAPS_DOTPRODUCT3 0x00800000L
/* D3DDEVICEDESC dwFVFCaps flags */
#define D3DFVFCAPS_TEXCOORDCOUNTMASK 0x0000ffffL /* mask for texture coordinate count field */
#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x00080000L /* Device prefers that vertex elements not be stripped */
#endif /* DIRECT3D_VERSION >= 0x0600 */
/*
* Description for a device.
* This is used to describe a device that is to be created or to query
* the current device.
*/
typedef struct _D3DDeviceDesc {
DWORD dwSize; /* Size of D3DDEVICEDESC structure */
DWORD dwFlags; /* Indicates which fields have valid data */
D3DCOLORMODEL dcmColorModel; /* Color model of device */
DWORD dwDevCaps; /* Capabilities of device */
D3DTRANSFORMCAPS dtcTransformCaps; /* Capabilities of transform */
BOOL bClipping; /* Device can do 3D clipping */
D3DLIGHTINGCAPS dlcLightingCaps; /* Capabilities of lighting */
D3DPRIMCAPS dpcLineCaps;
D3DPRIMCAPS dpcTriCaps;
DWORD dwDeviceRenderBitDepth; /* One of DDBB_8, 16, etc.. */
DWORD dwDeviceZBufferBitDepth;/* One of DDBD_16, 32, etc.. */
DWORD dwMaxBufferSize; /* Maximum execute buffer size */
DWORD dwMaxVertexCount; /* Maximum vertex count */
#if(DIRECT3D_VERSION >= 0x0500)
// *** New fields for DX5 *** //
// Width and height caps are 0 for legacy HALs.
DWORD dwMinTextureWidth, dwMinTextureHeight;
DWORD dwMaxTextureWidth, dwMaxTextureHeight;
DWORD dwMinStippleWidth, dwMaxStippleWidth;
DWORD dwMinStippleHeight, dwMaxStippleHeight;
#endif /* DIRECT3D_VERSION >= 0x0500 */
#if(DIRECT3D_VERSION >= 0x0600)
// New fields for DX6
DWORD dwMaxTextureRepeat;
DWORD dwMaxTextureAspectRatio;
DWORD dwMaxAnisotropy;
// Guard band that the rasterizer can accommodate
// Screen-space vertices inside this space but outside the viewport
// will get clipped properly.
D3DVALUE dvGuardBandLeft;
D3DVALUE dvGuardBandTop;
D3DVALUE dvGuardBandRight;
D3DVALUE dvGuardBandBottom;
D3DVALUE dvExtentsAdjust;
DWORD dwStencilCaps;
DWORD dwFVFCaps;
DWORD dwTextureOpCaps;
WORD wMaxTextureBlendStages;
WORD wMaxSimultaneousTextures;
#endif /* DIRECT3D_VERSION >= 0x0600 */
} D3DDEVICEDESC, *LPD3DDEVICEDESC;
#if(DIRECT3D_VERSION >= 0x0700)
typedef struct _D3DDeviceDesc7 {
DWORD dwDevCaps; /* Capabilities of device */
D3DPRIMCAPS dpcLineCaps;
D3DPRIMCAPS dpcTriCaps;
DWORD dwDeviceRenderBitDepth; /* One of DDBB_8, 16, etc.. */
DWORD dwDeviceZBufferBitDepth;/* One of DDBD_16, 32, etc.. */
DWORD dwMinTextureWidth, dwMinTextureHeight;
DWORD dwMaxTextureWidth, dwMaxTextureHeight;
DWORD dwMaxTextureRepeat;
DWORD dwMaxTextureAspectRatio;
DWORD dwMaxAnisotropy;
D3DVALUE dvGuardBandLeft;
D3DVALUE dvGuardBandTop;
D3DVALUE dvGuardBandRight;
D3DVALUE dvGuardBandBottom;
D3DVALUE dvExtentsAdjust;
DWORD dwStencilCaps;
DWORD dwFVFCaps;
DWORD dwTextureOpCaps;
WORD wMaxTextureBlendStages;
WORD wMaxSimultaneousTextures;
DWORD dwMaxActiveLights;
D3DVALUE dvMaxVertexW;
GUID deviceGUID;
WORD wMaxUserClipPlanes;
WORD wMaxVertexBlendMatrices;
DWORD dwVertexProcessingCaps;
DWORD dwReserved1;
DWORD dwReserved2;
DWORD dwReserved3;
DWORD dwReserved4;
} D3DDEVICEDESC7, *LPD3DDEVICEDESC7;
#endif /* DIRECT3D_VERSION >= 0x0700 */
#define D3DDEVICEDESCSIZE (sizeof(D3DDEVICEDESC))
#define D3DDEVICEDESC7SIZE (sizeof(D3DDEVICEDESC7))
typedef HRESULT (CALLBACK * LPD3DENUMDEVICESCALLBACK)(GUID FAR *lpGuid, LPSTR lpDeviceDescription, LPSTR lpDeviceName, LPD3DDEVICEDESC, LPD3DDEVICEDESC, LPVOID);
#if(DIRECT3D_VERSION >= 0x0700)
typedef HRESULT (CALLBACK * LPD3DENUMDEVICESCALLBACK7)(LPSTR lpDeviceDescription, LPSTR lpDeviceName, LPD3DDEVICEDESC7, LPVOID);
#endif /* DIRECT3D_VERSION >= 0x0700 */
/* D3DDEVICEDESC dwFlags indicating valid fields */
#define D3DDD_COLORMODEL 0x00000001L /* dcmColorModel is valid */
#define D3DDD_DEVCAPS 0x00000002L /* dwDevCaps is valid */
#define D3DDD_TRANSFORMCAPS 0x00000004L /* dtcTransformCaps is valid */
#define D3DDD_LIGHTINGCAPS 0x00000008L /* dlcLightingCaps is valid */
#define D3DDD_BCLIPPING 0x00000010L /* bClipping is valid */
#define D3DDD_LINECAPS 0x00000020L /* dpcLineCaps is valid */
#define D3DDD_TRICAPS 0x00000040L /* dpcTriCaps is valid */
#define D3DDD_DEVICERENDERBITDEPTH 0x00000080L /* dwDeviceRenderBitDepth is valid */
#define D3DDD_DEVICEZBUFFERBITDEPTH 0x00000100L /* dwDeviceZBufferBitDepth is valid */
#define D3DDD_MAXBUFFERSIZE 0x00000200L /* dwMaxBufferSize is valid */
#define D3DDD_MAXVERTEXCOUNT 0x00000400L /* dwMaxVertexCount is valid */
/* D3DDEVICEDESC dwDevCaps flags */
#define D3DDEVCAPS_FLOATTLVERTEX 0x00000001L /* Device accepts floating point */
/* for post-transform vertex data */
#define D3DDEVCAPS_SORTINCREASINGZ 0x00000002L /* Device needs data sorted for increasing Z */
#define D3DDEVCAPS_SORTDECREASINGZ 0X00000004L /* Device needs data sorted for decreasing Z */
#define D3DDEVCAPS_SORTEXACT 0x00000008L /* Device needs data sorted exactly */
#define D3DDEVCAPS_EXECUTESYSTEMMEMORY 0x00000010L /* Device can use execute buffers from system memory */
#define D3DDEVCAPS_EXECUTEVIDEOMEMORY 0x00000020L /* Device can use execute buffers from video memory */
#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY 0x00000040L /* Device can use TL buffers from system memory */
#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY 0x00000080L /* Device can use TL buffers from video memory */
#define D3DDEVCAPS_TEXTURESYSTEMMEMORY 0x00000100L /* Device can texture from system memory */
#define D3DDEVCAPS_TEXTUREVIDEOMEMORY 0x00000200L /* Device can texture from device memory */
#if(DIRECT3D_VERSION >= 0x0500)
#define D3DDEVCAPS_DRAWPRIMTLVERTEX 0x00000400L /* Device can draw TLVERTEX primitives */
#define D3DDEVCAPS_CANRENDERAFTERFLIP 0x00000800L /* Device can render without waiting for flip to complete */
#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM 0x00001000L /* Device can texture from nonlocal video memory */
#endif /* DIRECT3D_VERSION >= 0x0500 */
#if(DIRECT3D_VERSION >= 0x0600)
#define D3DDEVCAPS_DRAWPRIMITIVES2 0x00002000L /* Device can support DrawPrimitives2 */
#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x00004000L /* Device is texturing from separate memory pools */
#define D3DDEVCAPS_DRAWPRIMITIVES2EX 0x00008000L /* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*/
#endif /* DIRECT3D_VERSION >= 0x0600 */
#if(DIRECT3D_VERSION >= 0x0700)
#define D3DDEVCAPS_HWTRANSFORMANDLIGHT 0x00010000L /* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also */
#define D3DDEVCAPS_CANBLTSYSTONONLOCAL 0x00020000L /* Device supports a Tex Blt from system memory to non-local vidmem */
#define D3DDEVCAPS_HWRASTERIZATION 0x00080000L /* Device has HW acceleration for rasterization */
/*
* These are the flags in the D3DDEVICEDESC7.dwVertexProcessingCaps field
*/
/* device can do texgen */
#define D3DVTXPCAPS_TEXGEN 0x00000001L
/* device can do IDirect3DDevice7 colormaterialsource ops */
#define D3DVTXPCAPS_MATERIALSOURCE7 0x00000002L
/* device can do vertex fog */
#define D3DVTXPCAPS_VERTEXFOG 0x00000004L
/* device can do directional lights */
#define D3DVTXPCAPS_DIRECTIONALLIGHTS 0x00000008L
/* device can do positional lights (includes point and spot) */
#define D3DVTXPCAPS_POSITIONALLIGHTS 0x00000010L
/* device can do local viewer */
#define D3DVTXPCAPS_LOCALVIEWER 0x00000020L
#endif /* DIRECT3D_VERSION >= 0x0700 */
#define D3DFDS_COLORMODEL 0x00000001L /* Match color model */
#define D3DFDS_GUID 0x00000002L /* Match guid */
#define D3DFDS_HARDWARE 0x00000004L /* Match hardware/software */
#define D3DFDS_TRIANGLES 0x00000008L /* Match in triCaps */
#define D3DFDS_LINES 0x00000010L /* Match in lineCaps */
#define D3DFDS_MISCCAPS 0x00000020L /* Match primCaps.dwMiscCaps */
#define D3DFDS_RASTERCAPS 0x00000040L /* Match primCaps.dwRasterCaps */
#define D3DFDS_ZCMPCAPS 0x00000080L /* Match primCaps.dwZCmpCaps */
#define D3DFDS_ALPHACMPCAPS 0x00000100L /* Match primCaps.dwAlphaCmpCaps */
#define D3DFDS_SRCBLENDCAPS 0x00000200L /* Match primCaps.dwSourceBlendCaps */
#define D3DFDS_DSTBLENDCAPS 0x00000400L /* Match primCaps.dwDestBlendCaps */
#define D3DFDS_SHADECAPS 0x00000800L /* Match primCaps.dwShadeCaps */
#define D3DFDS_TEXTURECAPS 0x00001000L /* Match primCaps.dwTextureCaps */
#define D3DFDS_TEXTUREFILTERCAPS 0x00002000L /* Match primCaps.dwTextureFilterCaps */
#define D3DFDS_TEXTUREBLENDCAPS 0x00004000L /* Match primCaps.dwTextureBlendCaps */
#define D3DFDS_TEXTUREADDRESSCAPS 0x00008000L /* Match primCaps.dwTextureBlendCaps */
/*
* FindDevice arguments
*/
typedef struct _D3DFINDDEVICESEARCH {
DWORD dwSize;
DWORD dwFlags;
BOOL bHardware;
D3DCOLORMODEL dcmColorModel;
GUID guid;
DWORD dwCaps;
D3DPRIMCAPS dpcPrimCaps;
} D3DFINDDEVICESEARCH, *LPD3DFINDDEVICESEARCH;
typedef struct _D3DFINDDEVICERESULT {
DWORD dwSize;
GUID guid; /* guid which matched */
D3DDEVICEDESC ddHwDesc; /* hardware D3DDEVICEDESC */
D3DDEVICEDESC ddSwDesc; /* software D3DDEVICEDESC */
} D3DFINDDEVICERESULT, *LPD3DFINDDEVICERESULT;
/*
* Description of execute buffer.
*/
typedef struct _D3DExecuteBufferDesc {
DWORD dwSize; /* size of this structure */
DWORD dwFlags; /* flags indicating which fields are valid */
DWORD dwCaps; /* capabilities of execute buffer */
DWORD dwBufferSize; /* size of execute buffer data */
LPVOID lpData; /* pointer to actual data */
} D3DEXECUTEBUFFERDESC, *LPD3DEXECUTEBUFFERDESC;
/* D3DEXECUTEBUFFER dwFlags indicating valid fields */
#define D3DDEB_BUFSIZE 0x00000001l /* buffer size valid */
#define D3DDEB_CAPS 0x00000002l /* caps valid */
#define D3DDEB_LPDATA 0x00000004l /* lpData valid */
/* D3DEXECUTEBUFFER dwCaps */
#define D3DDEBCAPS_SYSTEMMEMORY 0x00000001l /* buffer in system memory */
#define D3DDEBCAPS_VIDEOMEMORY 0x00000002l /* buffer in device memory */
#define D3DDEBCAPS_MEM (D3DDEBCAPS_SYSTEMMEMORY|D3DDEBCAPS_VIDEOMEMORY)
#if(DIRECT3D_VERSION < 0x0800)
#if(DIRECT3D_VERSION >= 0x0700)
typedef struct _D3DDEVINFO_TEXTUREMANAGER {
BOOL bThrashing; /* indicates if thrashing */
DWORD dwApproxBytesDownloaded; /* Approximate number of bytes downloaded by texture manager */
DWORD dwNumEvicts; /* number of textures evicted */
DWORD dwNumVidCreates; /* number of textures created in video memory */
DWORD dwNumTexturesUsed; /* number of textures used */
DWORD dwNumUsedTexInVid; /* number of used textures present in video memory */
DWORD dwWorkingSet; /* number of textures in video memory */
DWORD dwWorkingSetBytes; /* number of bytes in video memory */
DWORD dwTotalManaged; /* total number of managed textures */
DWORD dwTotalBytes; /* total number of bytes of managed textures */
DWORD dwLastPri; /* priority of last texture evicted */
} D3DDEVINFO_TEXTUREMANAGER, *LPD3DDEVINFO_TEXTUREMANAGER;
typedef struct _D3DDEVINFO_TEXTURING {
DWORD dwNumLoads; /* counts Load() API calls */
DWORD dwApproxBytesLoaded; /* Approximate number bytes loaded via Load() */
DWORD dwNumPreLoads; /* counts PreLoad() API calls */
DWORD dwNumSet; /* counts SetTexture() API calls */
DWORD dwNumCreates; /* counts texture creates */
DWORD dwNumDestroys; /* counts texture destroys */
DWORD dwNumSetPriorities; /* counts SetPriority() API calls */
DWORD dwNumSetLODs; /* counts SetLOD() API calls */
DWORD dwNumLocks; /* counts number of texture locks */
DWORD dwNumGetDCs; /* counts number of GetDCs to textures */
} D3DDEVINFO_TEXTURING, *LPD3DDEVINFO_TEXTURING;
#endif /* DIRECT3D_VERSION >= 0x0700 */
#endif //(DIRECT3D_VERSION < 0x0800)
#pragma pack()
#endif /* _D3DCAPS_H_ */

342
third_party/dx9_sdk/include/d3drm.h vendored Normal file
View File

@ -0,0 +1,342 @@
/*==========================================================================;
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* File: d3drm.h
* Content: Direct3DRM include file
*
***************************************************************************/
#ifndef __D3DRM_H__
#define __D3DRM_H__
#include "ddraw.h"
#ifdef __cplusplus
struct IDirect3DRM;
#endif
typedef struct IDirect3DRM *LPDIRECT3DRM;
#include "d3drmobj.h"
#ifdef __cplusplus
extern "C" {
#endif
DEFINE_GUID(IID_IDirect3DRM, 0x2bc49361, 0x8327, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
DEFINE_GUID(IID_IDirect3DRM2, 0x4516ecc8, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
DEFINE_GUID(IID_IDirect3DRM3, 0x4516ec83, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
WIN_TYPES(IDirect3DRM, DIRECT3DRM);
WIN_TYPES(IDirect3DRM2, DIRECT3DRM2);
WIN_TYPES(IDirect3DRM3, DIRECT3DRM3);
/*
* Direct3DRM Object Class (for CoCreateInstance())
*/
DEFINE_GUID(CLSID_CDirect3DRM, 0x4516ec41, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
/* Create a Direct3DRM API */
STDAPI Direct3DRMCreate(LPDIRECT3DRM FAR *lplpDirect3DRM);
#undef INTERFACE
#define INTERFACE IDirect3DRM
DECLARE_INTERFACE_(IDirect3DRM, IUnknown)
{
IUNKNOWN_METHODS(PURE);
STDMETHOD(CreateObject)
(THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppv) PURE;
STDMETHOD(CreateFrame) (THIS_ LPDIRECT3DRMFRAME, LPDIRECT3DRMFRAME *) PURE;
STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *) PURE;
STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER *) PURE;
STDMETHOD(CreateFace) (THIS_ LPDIRECT3DRMFACE *) PURE;
STDMETHOD(CreateAnimation) (THIS_ LPDIRECT3DRMANIMATION *) PURE;
STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET *) PURE;
STDMETHOD(CreateTexture) (THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE *) PURE;
STDMETHOD(CreateLight) (THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
STDMETHOD(CreateLightRGB)
(THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
STDMETHOD(CreateMaterial) (THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL *) PURE;
STDMETHOD(CreateDevice) (THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE *) PURE;
/* Create a Windows Device using DirectDraw surfaces */
STDMETHOD(CreateDeviceFromSurface)
( THIS_ LPGUID lpGUID, LPDIRECTDRAW lpDD,
LPDIRECTDRAWSURFACE lpDDSBack, LPDIRECT3DRMDEVICE *
) PURE;
/* Create a Windows Device using D3D objects */
STDMETHOD(CreateDeviceFromD3D)
( THIS_ LPDIRECT3D lpD3D, LPDIRECT3DDEVICE lpD3DDev,
LPDIRECT3DRMDEVICE *
) PURE;
STDMETHOD(CreateDeviceFromClipper)
( THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID,
int width, int height, LPDIRECT3DRMDEVICE *) PURE;
STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS, LPDIRECT3DRMTEXTURE *) PURE;
STDMETHOD(CreateShadow)
( THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMLIGHT,
D3DVALUE px, D3DVALUE py, D3DVALUE pz,
D3DVALUE nx, D3DVALUE ny, D3DVALUE nz,
LPDIRECT3DRMVISUAL *
) PURE;
STDMETHOD(CreateViewport)
( THIS_ LPDIRECT3DRMDEVICE, LPDIRECT3DRMFRAME, DWORD, DWORD,
DWORD, DWORD, LPDIRECT3DRMVIEWPORT *
) PURE;
STDMETHOD(CreateWrap)
( THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME,
D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
D3DVALUE ou, D3DVALUE ov,
D3DVALUE su, D3DVALUE sv,
LPDIRECT3DRMWRAP *
) PURE;
STDMETHOD(CreateUserVisual) (THIS_ D3DRMUSERVISUALCALLBACK, LPVOID lPArg, LPDIRECT3DRMUSERVISUAL *) PURE;
STDMETHOD(LoadTexture) (THIS_ const char *, LPDIRECT3DRMTEXTURE *) PURE;
STDMETHOD(LoadTextureFromResource) (THIS_ HRSRC rs, LPDIRECT3DRMTEXTURE *) PURE;
STDMETHOD(SetSearchPath) (THIS_ LPCSTR) PURE;
STDMETHOD(AddSearchPath) (THIS_ LPCSTR) PURE;
STDMETHOD(GetSearchPath) (THIS_ DWORD *size_return, LPSTR path_return) PURE;
STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
STDMETHOD(GetDevices) (THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
STDMETHOD(GetNamedObject) (THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
STDMETHOD(EnumerateObjects) (THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
STDMETHOD(Load)
( THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS,
D3DRMLOADCALLBACK, LPVOID, D3DRMLOADTEXTURECALLBACK, LPVOID,
LPDIRECT3DRMFRAME
) PURE;
STDMETHOD(Tick) (THIS_ D3DVALUE) PURE;
};
#undef INTERFACE
#define INTERFACE IDirect3DRM2
DECLARE_INTERFACE_(IDirect3DRM2, IUnknown)
{
IUNKNOWN_METHODS(PURE);
STDMETHOD(CreateObject)
(THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppv) PURE;
STDMETHOD(CreateFrame) (THIS_ LPDIRECT3DRMFRAME, LPDIRECT3DRMFRAME2 *) PURE;
STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *) PURE;
STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER2 *) PURE;
STDMETHOD(CreateFace) (THIS_ LPDIRECT3DRMFACE *) PURE;
STDMETHOD(CreateAnimation) (THIS_ LPDIRECT3DRMANIMATION *) PURE;
STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET *) PURE;
STDMETHOD(CreateTexture) (THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE2 *) PURE;
STDMETHOD(CreateLight) (THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
STDMETHOD(CreateLightRGB)
(THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
STDMETHOD(CreateMaterial) (THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL *) PURE;
STDMETHOD(CreateDevice) (THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE2 *) PURE;
/* Create a Windows Device using DirectDraw surfaces */
STDMETHOD(CreateDeviceFromSurface)
( THIS_ LPGUID lpGUID, LPDIRECTDRAW lpDD,
LPDIRECTDRAWSURFACE lpDDSBack, LPDIRECT3DRMDEVICE2 *
) PURE;
/* Create a Windows Device using D3D objects */
STDMETHOD(CreateDeviceFromD3D)
( THIS_ LPDIRECT3D2 lpD3D, LPDIRECT3DDEVICE2 lpD3DDev,
LPDIRECT3DRMDEVICE2 *
) PURE;
STDMETHOD(CreateDeviceFromClipper)
( THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID,
int width, int height, LPDIRECT3DRMDEVICE2 *) PURE;
STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS, LPDIRECT3DRMTEXTURE2 *) PURE;
STDMETHOD(CreateShadow)
( THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMLIGHT,
D3DVALUE px, D3DVALUE py, D3DVALUE pz,
D3DVALUE nx, D3DVALUE ny, D3DVALUE nz,
LPDIRECT3DRMVISUAL *
) PURE;
STDMETHOD(CreateViewport)
( THIS_ LPDIRECT3DRMDEVICE, LPDIRECT3DRMFRAME, DWORD, DWORD,
DWORD, DWORD, LPDIRECT3DRMVIEWPORT *
) PURE;
STDMETHOD(CreateWrap)
( THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME,
D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
D3DVALUE ou, D3DVALUE ov,
D3DVALUE su, D3DVALUE sv,
LPDIRECT3DRMWRAP *
) PURE;
STDMETHOD(CreateUserVisual) (THIS_ D3DRMUSERVISUALCALLBACK, LPVOID lPArg, LPDIRECT3DRMUSERVISUAL *) PURE;
STDMETHOD(LoadTexture) (THIS_ const char *, LPDIRECT3DRMTEXTURE2 *) PURE;
STDMETHOD(LoadTextureFromResource) (THIS_ HMODULE hModule, LPCTSTR strName, LPCTSTR strType, LPDIRECT3DRMTEXTURE2 *) PURE;
STDMETHOD(SetSearchPath) (THIS_ LPCSTR) PURE;
STDMETHOD(AddSearchPath) (THIS_ LPCSTR) PURE;
STDMETHOD(GetSearchPath) (THIS_ DWORD *size_return, LPSTR path_return) PURE;
STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
STDMETHOD(GetDevices) (THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
STDMETHOD(GetNamedObject) (THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
STDMETHOD(EnumerateObjects) (THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
STDMETHOD(Load)
( THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS,
D3DRMLOADCALLBACK, LPVOID, D3DRMLOADTEXTURECALLBACK, LPVOID,
LPDIRECT3DRMFRAME
) PURE;
STDMETHOD(Tick) (THIS_ D3DVALUE) PURE;
STDMETHOD(CreateProgressiveMesh)(THIS_ LPDIRECT3DRMPROGRESSIVEMESH *) PURE;
};
#undef INTERFACE
#define INTERFACE IDirect3DRM3
DECLARE_INTERFACE_(IDirect3DRM3, IUnknown)
{
IUNKNOWN_METHODS(PURE);
STDMETHOD(CreateObject)
(THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppv) PURE;
STDMETHOD(CreateFrame) (THIS_ LPDIRECT3DRMFRAME3, LPDIRECT3DRMFRAME3 *) PURE;
STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *) PURE;
STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER3 *) PURE;
STDMETHOD(CreateFace) (THIS_ LPDIRECT3DRMFACE2 *) PURE;
STDMETHOD(CreateAnimation) (THIS_ LPDIRECT3DRMANIMATION2 *) PURE;
STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET2 *) PURE;
STDMETHOD(CreateTexture) (THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE3 *) PURE;
STDMETHOD(CreateLight) (THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
STDMETHOD(CreateLightRGB)
(THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
STDMETHOD(CreateMaterial) (THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL2 *) PURE;
STDMETHOD(CreateDevice) (THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE3 *) PURE;
/* Create a Windows Device using DirectDraw surfaces */
STDMETHOD(CreateDeviceFromSurface)
( THIS_ LPGUID lpGUID, LPDIRECTDRAW lpDD,
LPDIRECTDRAWSURFACE lpDDSBack, DWORD dwFlags, LPDIRECT3DRMDEVICE3 *
) PURE;
/* Create a Windows Device using D3D objects */
STDMETHOD(CreateDeviceFromD3D)
( THIS_ LPDIRECT3D2 lpD3D, LPDIRECT3DDEVICE2 lpD3DDev,
LPDIRECT3DRMDEVICE3 *
) PURE;
STDMETHOD(CreateDeviceFromClipper)
( THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID,
int width, int height, LPDIRECT3DRMDEVICE3 *) PURE;
STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS, LPDIRECT3DRMTEXTURE3 *) PURE;
STDMETHOD(CreateShadow)
( THIS_ LPUNKNOWN, LPDIRECT3DRMLIGHT,
D3DVALUE px, D3DVALUE py, D3DVALUE pz,
D3DVALUE nx, D3DVALUE ny, D3DVALUE nz,
LPDIRECT3DRMSHADOW2 *
) PURE;
STDMETHOD(CreateViewport)
( THIS_ LPDIRECT3DRMDEVICE3, LPDIRECT3DRMFRAME3, DWORD, DWORD,
DWORD, DWORD, LPDIRECT3DRMVIEWPORT2 *
) PURE;
STDMETHOD(CreateWrap)
( THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME3,
D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
D3DVALUE ou, D3DVALUE ov,
D3DVALUE su, D3DVALUE sv,
LPDIRECT3DRMWRAP *
) PURE;
STDMETHOD(CreateUserVisual) (THIS_ D3DRMUSERVISUALCALLBACK, LPVOID lPArg, LPDIRECT3DRMUSERVISUAL *) PURE;
STDMETHOD(LoadTexture) (THIS_ const char *, LPDIRECT3DRMTEXTURE3 *) PURE;
STDMETHOD(LoadTextureFromResource) (THIS_ HMODULE hModule, LPCTSTR strName, LPCTSTR strType, LPDIRECT3DRMTEXTURE3 *) PURE;
STDMETHOD(SetSearchPath) (THIS_ LPCSTR) PURE;
STDMETHOD(AddSearchPath) (THIS_ LPCSTR) PURE;
STDMETHOD(GetSearchPath) (THIS_ DWORD *size_return, LPSTR path_return) PURE;
STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
STDMETHOD(GetDevices) (THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
STDMETHOD(GetNamedObject) (THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
STDMETHOD(EnumerateObjects) (THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
STDMETHOD(Load)
( THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS,
D3DRMLOADCALLBACK, LPVOID, D3DRMLOADTEXTURE3CALLBACK, LPVOID,
LPDIRECT3DRMFRAME3
) PURE;
STDMETHOD(Tick) (THIS_ D3DVALUE) PURE;
STDMETHOD(CreateProgressiveMesh)(THIS_ LPDIRECT3DRMPROGRESSIVEMESH *) PURE;
/* Used with IDirect3DRMObject2 */
STDMETHOD(RegisterClient) (THIS_ REFGUID rguid, LPDWORD lpdwID) PURE;
STDMETHOD(UnregisterClient) (THIS_ REFGUID rguid) PURE;
STDMETHOD(CreateClippedVisual) (THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMCLIPPEDVISUAL *) PURE;
STDMETHOD(SetOptions) (THIS_ DWORD);
STDMETHOD(GetOptions) (THIS_ LPDWORD);
};
#define D3DRM_OK DD_OK
#define D3DRMERR_BADOBJECT MAKE_DDHRESULT(781)
#define D3DRMERR_BADTYPE MAKE_DDHRESULT(782)
#define D3DRMERR_BADALLOC MAKE_DDHRESULT(783)
#define D3DRMERR_FACEUSED MAKE_DDHRESULT(784)
#define D3DRMERR_NOTFOUND MAKE_DDHRESULT(785)
#define D3DRMERR_NOTDONEYET MAKE_DDHRESULT(786)
#define D3DRMERR_FILENOTFOUND MAKE_DDHRESULT(787)
#define D3DRMERR_BADFILE MAKE_DDHRESULT(788)
#define D3DRMERR_BADDEVICE MAKE_DDHRESULT(789)
#define D3DRMERR_BADVALUE MAKE_DDHRESULT(790)
#define D3DRMERR_BADMAJORVERSION MAKE_DDHRESULT(791)
#define D3DRMERR_BADMINORVERSION MAKE_DDHRESULT(792)
#define D3DRMERR_UNABLETOEXECUTE MAKE_DDHRESULT(793)
#define D3DRMERR_LIBRARYNOTFOUND MAKE_DDHRESULT(794)
#define D3DRMERR_INVALIDLIBRARY MAKE_DDHRESULT(795)
#define D3DRMERR_PENDING MAKE_DDHRESULT(796)
#define D3DRMERR_NOTENOUGHDATA MAKE_DDHRESULT(797)
#define D3DRMERR_REQUESTTOOLARGE MAKE_DDHRESULT(798)
#define D3DRMERR_REQUESTTOOSMALL MAKE_DDHRESULT(799)
#define D3DRMERR_CONNECTIONLOST MAKE_DDHRESULT(800)
#define D3DRMERR_LOADABORTED MAKE_DDHRESULT(801)
#define D3DRMERR_NOINTERNET MAKE_DDHRESULT(802)
#define D3DRMERR_BADCACHEFILE MAKE_DDHRESULT(803)
#define D3DRMERR_BOXNOTSET MAKE_DDHRESULT(804)
#define D3DRMERR_BADPMDATA MAKE_DDHRESULT(805)
#define D3DRMERR_CLIENTNOTREGISTERED MAKE_DDHRESULT(806)
#define D3DRMERR_NOTCREATEDFROMDDS MAKE_DDHRESULT(807)
#define D3DRMERR_NOSUCHKEY MAKE_DDHRESULT(808)
#define D3DRMERR_INCOMPATABLEKEY MAKE_DDHRESULT(809)
#define D3DRMERR_ELEMENTINUSE MAKE_DDHRESULT(810)
#define D3DRMERR_TEXTUREFORMATNOTFOUND MAKE_DDHRESULT(811)
#define D3DRMERR_NOTAGGREGATED MAKE_DDHRESULT(812)
#ifdef __cplusplus
};
#endif
#endif /* _D3DRMAPI_H_ */

695
third_party/dx9_sdk/include/d3drmdef.h vendored Normal file
View File

@ -0,0 +1,695 @@
/*==========================================================================;
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* File: d3drm.h
* Content: Direct3DRM include file
*
***************************************************************************/
#ifndef __D3DRMDEFS_H__
#define __D3DRMDEFS_H__
#include <stddef.h>
#include "d3dtypes.h"
#ifdef WIN32
#define D3DRMAPI __stdcall
#else
#define D3DRMAPI
#endif
#if defined(__cplusplus)
extern "C" {
#endif
#ifndef TRUE
#define FALSE 0
#define TRUE 1
#endif
typedef struct _D3DRMVECTOR4D
{ D3DVALUE x, y, z, w;
} D3DRMVECTOR4D, *LPD3DRMVECTOR4D;
typedef D3DVALUE D3DRMMATRIX4D[4][4];
typedef struct _D3DRMQUATERNION
{ D3DVALUE s;
D3DVECTOR v;
} D3DRMQUATERNION, *LPD3DRMQUATERNION;
typedef struct _D3DRMRAY
{ D3DVECTOR dvDir;
D3DVECTOR dvPos;
} D3DRMRAY, *LPD3DRMRAY;
typedef struct _D3DRMBOX
{ D3DVECTOR min, max;
} D3DRMBOX, *LPD3DRMBOX;
typedef void (*D3DRMWRAPCALLBACK)
(LPD3DVECTOR, int* u, int* v, LPD3DVECTOR a, LPD3DVECTOR b, LPVOID);
typedef enum _D3DRMLIGHTTYPE
{ D3DRMLIGHT_AMBIENT,
D3DRMLIGHT_POINT,
D3DRMLIGHT_SPOT,
D3DRMLIGHT_DIRECTIONAL,
D3DRMLIGHT_PARALLELPOINT
} D3DRMLIGHTTYPE, *LPD3DRMLIGHTTYPE;
typedef enum _D3DRMSHADEMODE {
D3DRMSHADE_FLAT = 0,
D3DRMSHADE_GOURAUD = 1,
D3DRMSHADE_PHONG = 2,
D3DRMSHADE_MASK = 7,
D3DRMSHADE_MAX = 8
} D3DRMSHADEMODE, *LPD3DRMSHADEMODE;
typedef enum _D3DRMLIGHTMODE {
D3DRMLIGHT_OFF = 0 * D3DRMSHADE_MAX,
D3DRMLIGHT_ON = 1 * D3DRMSHADE_MAX,
D3DRMLIGHT_MASK = 7 * D3DRMSHADE_MAX,
D3DRMLIGHT_MAX = 8 * D3DRMSHADE_MAX
} D3DRMLIGHTMODE, *LPD3DRMLIGHTMODE;
typedef enum _D3DRMFILLMODE {
D3DRMFILL_POINTS = 0 * D3DRMLIGHT_MAX,
D3DRMFILL_WIREFRAME = 1 * D3DRMLIGHT_MAX,
D3DRMFILL_SOLID = 2 * D3DRMLIGHT_MAX,
D3DRMFILL_MASK = 7 * D3DRMLIGHT_MAX,
D3DRMFILL_MAX = 8 * D3DRMLIGHT_MAX
} D3DRMFILLMODE, *LPD3DRMFILLMODE;
typedef DWORD D3DRMRENDERQUALITY, *LPD3DRMRENDERQUALITY;
#define D3DRMRENDER_WIREFRAME (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_WIREFRAME)
#define D3DRMRENDER_UNLITFLAT (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_SOLID)
#define D3DRMRENDER_FLAT (D3DRMSHADE_FLAT+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
#define D3DRMRENDER_GOURAUD (D3DRMSHADE_GOURAUD+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
#define D3DRMRENDER_PHONG (D3DRMSHADE_PHONG+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
#define D3DRMRENDERMODE_BLENDEDTRANSPARENCY 1
#define D3DRMRENDERMODE_SORTEDTRANSPARENCY 2
#define D3DRMRENDERMODE_LIGHTINMODELSPACE 8
#define D3DRMRENDERMODE_VIEWDEPENDENTSPECULAR 16
#define D3DRMRENDERMODE_DISABLESORTEDALPHAZWRITE 32
typedef enum _D3DRMTEXTUREQUALITY
{ D3DRMTEXTURE_NEAREST, /* choose nearest texel */
D3DRMTEXTURE_LINEAR, /* interpolate 4 texels */
D3DRMTEXTURE_MIPNEAREST, /* nearest texel in nearest mipmap */
D3DRMTEXTURE_MIPLINEAR, /* interpolate 2 texels from 2 mipmaps */
D3DRMTEXTURE_LINEARMIPNEAREST, /* interpolate 4 texels in nearest mipmap */
D3DRMTEXTURE_LINEARMIPLINEAR /* interpolate 8 texels from 2 mipmaps */
} D3DRMTEXTUREQUALITY, *LPD3DRMTEXTUREQUALITY;
/*
* Texture flags
*/
#define D3DRMTEXTURE_FORCERESIDENT 0x00000001 /* texture should be kept in video memory */
#define D3DRMTEXTURE_STATIC 0x00000002 /* texture will not change */
#define D3DRMTEXTURE_DOWNSAMPLEPOINT 0x00000004 /* point filtering should be used when downsampling */
#define D3DRMTEXTURE_DOWNSAMPLEBILINEAR 0x00000008 /* bilinear filtering should be used when downsampling */
#define D3DRMTEXTURE_DOWNSAMPLEREDUCEDEPTH 0x00000010 /* reduce bit depth when downsampling */
#define D3DRMTEXTURE_DOWNSAMPLENONE 0x00000020 /* texture should never be downsampled */
#define D3DRMTEXTURE_CHANGEDPIXELS 0x00000040 /* pixels have changed */
#define D3DRMTEXTURE_CHANGEDPALETTE 0x00000080 /* palette has changed */
#define D3DRMTEXTURE_INVALIDATEONLY 0x00000100 /* dirty regions are invalid */
/*
* Shadow flags
*/
#define D3DRMSHADOW_TRUEALPHA 0x00000001 /* shadow should render without artifacts when true alpha is on */
typedef enum _D3DRMCOMBINETYPE
{ D3DRMCOMBINE_REPLACE,
D3DRMCOMBINE_BEFORE,
D3DRMCOMBINE_AFTER
} D3DRMCOMBINETYPE, *LPD3DRMCOMBINETYPE;
typedef D3DCOLORMODEL D3DRMCOLORMODEL, *LPD3DRMCOLORMODEL;
typedef enum _D3DRMPALETTEFLAGS
{ D3DRMPALETTE_FREE, /* renderer may use this entry freely */
D3DRMPALETTE_READONLY, /* fixed but may be used by renderer */
D3DRMPALETTE_RESERVED /* may not be used by renderer */
} D3DRMPALETTEFLAGS, *LPD3DRMPALETTEFLAGS;
typedef struct _D3DRMPALETTEENTRY
{ unsigned char red; /* 0 .. 255 */
unsigned char green; /* 0 .. 255 */
unsigned char blue; /* 0 .. 255 */
unsigned char flags; /* one of D3DRMPALETTEFLAGS */
} D3DRMPALETTEENTRY, *LPD3DRMPALETTEENTRY;
typedef struct _D3DRMIMAGE
{ int width, height; /* width and height in pixels */
int aspectx, aspecty; /* aspect ratio for non-square pixels */
int depth; /* bits per pixel */
int rgb; /* if false, pixels are indices into a
palette otherwise, pixels encode
RGB values. */
int bytes_per_line; /* number of bytes of memory for a
scanline. This must be a multiple
of 4. */
void* buffer1; /* memory to render into (first buffer). */
void* buffer2; /* second rendering buffer for double
buffering, set to NULL for single
buffering. */
unsigned long red_mask;
unsigned long green_mask;
unsigned long blue_mask;
unsigned long alpha_mask; /* if rgb is true, these are masks for
the red, green and blue parts of a
pixel. Otherwise, these are masks
for the significant bits of the
red, green and blue elements in the
palette. For instance, most SVGA
displays use 64 intensities of red,
green and blue, so the masks should
all be set to 0xfc. */
int palette_size; /* number of entries in palette */
D3DRMPALETTEENTRY* palette; /* description of the palette (only if
rgb is false). Must be (1<<depth)
elements. */
} D3DRMIMAGE, *LPD3DRMIMAGE;
typedef enum _D3DRMWRAPTYPE
{ D3DRMWRAP_FLAT,
D3DRMWRAP_CYLINDER,
D3DRMWRAP_SPHERE,
D3DRMWRAP_CHROME,
D3DRMWRAP_SHEET,
D3DRMWRAP_BOX
} D3DRMWRAPTYPE, *LPD3DRMWRAPTYPE;
#define D3DRMWIREFRAME_CULL 1 /* cull backfaces */
#define D3DRMWIREFRAME_HIDDENLINE 2 /* lines are obscured by closer objects */
/*
* Do not use righthanded perspective in Viewport2::SetProjection().
* Set up righthanded mode by using IDirect3DRM3::SetOptions().
*/
typedef enum _D3DRMPROJECTIONTYPE
{ D3DRMPROJECT_PERSPECTIVE,
D3DRMPROJECT_ORTHOGRAPHIC,
D3DRMPROJECT_RIGHTHANDPERSPECTIVE, /* Only valid pre-DX6 */
D3DRMPROJECT_RIGHTHANDORTHOGRAPHIC /* Only valid pre-DX6 */
} D3DRMPROJECTIONTYPE, *LPD3DRMPROJECTIONTYPE;
#define D3DRMOPTIONS_LEFTHANDED 0x00000001L /* Default */
#define D3DRMOPTIONS_RIGHTHANDED 0x00000002L
typedef enum _D3DRMXOFFORMAT
{ D3DRMXOF_BINARY,
D3DRMXOF_COMPRESSED,
D3DRMXOF_TEXT
} D3DRMXOFFORMAT, *LPD3DRMXOFFORMAT;
typedef DWORD D3DRMSAVEOPTIONS;
#define D3DRMXOFSAVE_NORMALS 1
#define D3DRMXOFSAVE_TEXTURECOORDINATES 2
#define D3DRMXOFSAVE_MATERIALS 4
#define D3DRMXOFSAVE_TEXTURENAMES 8
#define D3DRMXOFSAVE_ALL 15
#define D3DRMXOFSAVE_TEMPLATES 16
#define D3DRMXOFSAVE_TEXTURETOPOLOGY 32
typedef enum _D3DRMCOLORSOURCE
{ D3DRMCOLOR_FROMFACE,
D3DRMCOLOR_FROMVERTEX
} D3DRMCOLORSOURCE, *LPD3DRMCOLORSOURCE;
typedef enum _D3DRMFRAMECONSTRAINT
{ D3DRMCONSTRAIN_Z, /* use only X and Y rotations */
D3DRMCONSTRAIN_Y, /* use only X and Z rotations */
D3DRMCONSTRAIN_X /* use only Y and Z rotations */
} D3DRMFRAMECONSTRAINT, *LPD3DRMFRAMECONSTRAINT;
typedef enum _D3DRMMATERIALMODE
{ D3DRMMATERIAL_FROMMESH,
D3DRMMATERIAL_FROMPARENT,
D3DRMMATERIAL_FROMFRAME
} D3DRMMATERIALMODE, *LPD3DRMMATERIALMODE;
typedef enum _D3DRMFOGMODE
{ D3DRMFOG_LINEAR, /* linear between start and end */
D3DRMFOG_EXPONENTIAL, /* density * exp(-distance) */
D3DRMFOG_EXPONENTIALSQUARED /* density * exp(-distance*distance) */
} D3DRMFOGMODE, *LPD3DRMFOGMODE;
typedef enum _D3DRMZBUFFERMODE {
D3DRMZBUFFER_FROMPARENT, /* default */
D3DRMZBUFFER_ENABLE, /* enable zbuffering */
D3DRMZBUFFER_DISABLE /* disable zbuffering */
} D3DRMZBUFFERMODE, *LPD3DRMZBUFFERMODE;
typedef enum _D3DRMSORTMODE {
D3DRMSORT_FROMPARENT, /* default */
D3DRMSORT_NONE, /* don't sort child frames */
D3DRMSORT_FRONTTOBACK, /* sort child frames front-to-back */
D3DRMSORT_BACKTOFRONT /* sort child frames back-to-front */
} D3DRMSORTMODE, *LPD3DRMSORTMODE;
typedef struct _D3DRMMATERIALOVERRIDE
{
DWORD dwSize; /* Size of this structure */
DWORD dwFlags; /* Indicate which fields are valid */
D3DCOLORVALUE dcDiffuse; /* RGBA */
D3DCOLORVALUE dcAmbient; /* RGB */
D3DCOLORVALUE dcEmissive; /* RGB */
D3DCOLORVALUE dcSpecular; /* RGB */
D3DVALUE dvPower;
LPUNKNOWN lpD3DRMTex;
} D3DRMMATERIALOVERRIDE, *LPD3DRMMATERIALOVERRIDE;
#define D3DRMMATERIALOVERRIDE_DIFFUSE_ALPHAONLY 0x00000001L
#define D3DRMMATERIALOVERRIDE_DIFFUSE_RGBONLY 0x00000002L
#define D3DRMMATERIALOVERRIDE_DIFFUSE 0x00000003L
#define D3DRMMATERIALOVERRIDE_AMBIENT 0x00000004L
#define D3DRMMATERIALOVERRIDE_EMISSIVE 0x00000008L
#define D3DRMMATERIALOVERRIDE_SPECULAR 0x00000010L
#define D3DRMMATERIALOVERRIDE_POWER 0x00000020L
#define D3DRMMATERIALOVERRIDE_TEXTURE 0x00000040L
#define D3DRMMATERIALOVERRIDE_DIFFUSE_ALPHAMULTIPLY 0x00000080L
#define D3DRMMATERIALOVERRIDE_ALL 0x000000FFL
#define D3DRMFPTF_ALPHA 0x00000001L
#define D3DRMFPTF_NOALPHA 0x00000002L
#define D3DRMFPTF_PALETTIZED 0x00000004L
#define D3DRMFPTF_NOTPALETTIZED 0x00000008L
#define D3DRMSTATECHANGE_UPDATEONLY 0x000000001L
#define D3DRMSTATECHANGE_VOLATILE 0x000000002L
#define D3DRMSTATECHANGE_NONVOLATILE 0x000000004L
#define D3DRMSTATECHANGE_RENDER 0x000000020L
#define D3DRMSTATECHANGE_LIGHT 0x000000040L
/*
* Values for flags in RM3::CreateDeviceFromSurface
*/
#define D3DRMDEVICE_NOZBUFFER 0x00000001L
/*
* Values for flags in Object2::SetClientData
*/
#define D3DRMCLIENTDATA_NONE 0x00000001L
#define D3DRMCLIENTDATA_LOCALFREE 0x00000002L
#define D3DRMCLIENTDATA_IUNKNOWN 0x00000004L
/*
* Values for flags in Frame2::AddMoveCallback.
*/
#define D3DRMCALLBACK_PREORDER 0
#define D3DRMCALLBACK_POSTORDER 1
/*
* Values for flags in MeshBuilder2::RayPick.
*/
#define D3DRMRAYPICK_ONLYBOUNDINGBOXES 1
#define D3DRMRAYPICK_IGNOREFURTHERPRIMITIVES 2
#define D3DRMRAYPICK_INTERPOLATEUV 4
#define D3DRMRAYPICK_INTERPOLATECOLOR 8
#define D3DRMRAYPICK_INTERPOLATENORMAL 0x10
/*
* Values for flags in MeshBuilder3::AddFacesIndexed.
*/
#define D3DRMADDFACES_VERTICESONLY 1
/*
* Values for flags in MeshBuilder2::GenerateNormals.
*/
#define D3DRMGENERATENORMALS_PRECOMPACT 1
#define D3DRMGENERATENORMALS_USECREASEANGLE 2
/*
* Values for MeshBuilder3::GetParentMesh
*/
#define D3DRMMESHBUILDER_DIRECTPARENT 1
#define D3DRMMESHBUILDER_ROOTMESH 2
/*
* Flags for MeshBuilder3::Enable
*/
#define D3DRMMESHBUILDER_RENDERENABLE 0x00000001L
#define D3DRMMESHBUILDER_PICKENABLE 0x00000002L
/*
* Flags for MeshBuilder3::AddMeshBuilder
*/
#define D3DRMADDMESHBUILDER_DONTCOPYAPPDATA 1
#define D3DRMADDMESHBUILDER_FLATTENSUBMESHES 2
#define D3DRMADDMESHBUILDER_NOSUBMESHES 4
/*
* Flags for Object2::GetAge when used with MeshBuilders
*/
#define D3DRMMESHBUILDERAGE_GEOMETRY 0x00000001L
#define D3DRMMESHBUILDERAGE_MATERIALS 0x00000002L
#define D3DRMMESHBUILDERAGE_TEXTURES 0x00000004L
/*
* Format flags for MeshBuilder3::AddTriangles.
*/
#define D3DRMFVF_TYPE 0x00000001L
#define D3DRMFVF_NORMAL 0x00000002L
#define D3DRMFVF_COLOR 0x00000004L
#define D3DRMFVF_TEXTURECOORDS 0x00000008L
#define D3DRMVERTEX_STRIP 0x00000001L
#define D3DRMVERTEX_FAN 0x00000002L
#define D3DRMVERTEX_LIST 0x00000004L
/*
* Values for flags in Viewport2::Clear2
*/
#define D3DRMCLEAR_TARGET 0x00000001L
#define D3DRMCLEAR_ZBUFFER 0x00000002L
#define D3DRMCLEAR_DIRTYRECTS 0x00000004L
#define D3DRMCLEAR_ALL (D3DRMCLEAR_TARGET | \
D3DRMCLEAR_ZBUFFER | \
D3DRMCLEAR_DIRTYRECTS)
/*
* Values for flags in Frame3::SetSceneFogMethod
*/
#define D3DRMFOGMETHOD_VERTEX 0x00000001L
#define D3DRMFOGMETHOD_TABLE 0x00000002L
#define D3DRMFOGMETHOD_ANY 0x00000004L
/*
* Values for flags in Frame3::SetTraversalOptions
*/
#define D3DRMFRAME_RENDERENABLE 0x00000001L
#define D3DRMFRAME_PICKENABLE 0x00000002L
typedef DWORD D3DRMANIMATIONOPTIONS;
#define D3DRMANIMATION_OPEN 0x01L
#define D3DRMANIMATION_CLOSED 0x02L
#define D3DRMANIMATION_LINEARPOSITION 0x04L
#define D3DRMANIMATION_SPLINEPOSITION 0x08L
#define D3DRMANIMATION_SCALEANDROTATION 0x00000010L
#define D3DRMANIMATION_POSITION 0x00000020L
typedef DWORD D3DRMINTERPOLATIONOPTIONS;
#define D3DRMINTERPOLATION_OPEN 0x01L
#define D3DRMINTERPOLATION_CLOSED 0x02L
#define D3DRMINTERPOLATION_NEAREST 0x0100L
#define D3DRMINTERPOLATION_LINEAR 0x04L
#define D3DRMINTERPOLATION_SPLINE 0x08L
#define D3DRMINTERPOLATION_VERTEXCOLOR 0x40L
#define D3DRMINTERPOLATION_SLERPNORMALS 0x80L
typedef DWORD D3DRMLOADOPTIONS;
#define D3DRMLOAD_FROMFILE 0x00L
#define D3DRMLOAD_FROMRESOURCE 0x01L
#define D3DRMLOAD_FROMMEMORY 0x02L
#define D3DRMLOAD_FROMSTREAM 0x04L
#define D3DRMLOAD_FROMURL 0x08L
#define D3DRMLOAD_BYNAME 0x10L
#define D3DRMLOAD_BYPOSITION 0x20L
#define D3DRMLOAD_BYGUID 0x40L
#define D3DRMLOAD_FIRST 0x80L
#define D3DRMLOAD_INSTANCEBYREFERENCE 0x100L
#define D3DRMLOAD_INSTANCEBYCOPYING 0x200L
#define D3DRMLOAD_ASYNCHRONOUS 0x400L
typedef struct _D3DRMLOADRESOURCE {
HMODULE hModule;
LPCTSTR lpName;
LPCTSTR lpType;
} D3DRMLOADRESOURCE, *LPD3DRMLOADRESOURCE;
typedef struct _D3DRMLOADMEMORY {
LPVOID lpMemory;
DWORD dSize;
} D3DRMLOADMEMORY, *LPD3DRMLOADMEMORY;
#define D3DRMPMESHSTATUS_VALID 0x01L
#define D3DRMPMESHSTATUS_INTERRUPTED 0x02L
#define D3DRMPMESHSTATUS_BASEMESHCOMPLETE 0x04L
#define D3DRMPMESHSTATUS_COMPLETE 0x08L
#define D3DRMPMESHSTATUS_RENDERABLE 0x10L
#define D3DRMPMESHEVENT_BASEMESH 0x01L
#define D3DRMPMESHEVENT_COMPLETE 0x02L
typedef struct _D3DRMPMESHLOADSTATUS {
DWORD dwSize; // Size of this structure
DWORD dwPMeshSize; // Total Size (bytes)
DWORD dwBaseMeshSize; // Total Size of the Base Mesh
DWORD dwBytesLoaded; // Total bytes loaded
DWORD dwVerticesLoaded; // Number of vertices loaded
DWORD dwFacesLoaded; // Number of faces loaded
HRESULT dwLoadResult; // Result of the load operation
DWORD dwFlags;
} D3DRMPMESHLOADSTATUS, *LPD3DRMPMESHLOADSTATUS;
typedef enum _D3DRMUSERVISUALREASON {
D3DRMUSERVISUAL_CANSEE,
D3DRMUSERVISUAL_RENDER
} D3DRMUSERVISUALREASON, *LPD3DRMUSERVISUALREASON;
typedef struct _D3DRMANIMATIONKEY
{
DWORD dwSize;
DWORD dwKeyType;
D3DVALUE dvTime;
DWORD dwID;
#if (!defined __cplusplus) || (!defined D3D_OVERLOADS)
union
{
D3DRMQUATERNION dqRotateKey;
D3DVECTOR dvScaleKey;
D3DVECTOR dvPositionKey;
};
#else
/*
* We do this as D3D_OVERLOADS defines constructors for D3DVECTOR,
* this can then not be used in a union. Use the inlines provided
* to extract and set the required component.
*/
D3DVALUE dvK[4];
#endif
} D3DRMANIMATIONKEY;
typedef D3DRMANIMATIONKEY *LPD3DRMANIMATIONKEY;
#if (defined __cplusplus) && (defined D3D_OVERLOADS)
inline VOID
D3DRMAnimationGetRotateKey(const D3DRMANIMATIONKEY& rmKey,
D3DRMQUATERNION& rmQuat)
{
rmQuat.s = rmKey.dvK[0];
rmQuat.v = D3DVECTOR(rmKey.dvK[1], rmKey.dvK[2], rmKey.dvK[3]);
}
inline VOID
D3DRMAnimationGetScaleKey(const D3DRMANIMATIONKEY& rmKey,
D3DVECTOR& dvVec)
{
dvVec = D3DVECTOR(rmKey.dvK[0], rmKey.dvK[1], rmKey.dvK[2]);
}
inline VOID
D3DRMAnimationGetPositionKey(const D3DRMANIMATIONKEY& rmKey,
D3DVECTOR& dvVec)
{
dvVec = D3DVECTOR(rmKey.dvK[0], rmKey.dvK[1], rmKey.dvK[2]);
}
inline VOID
D3DRMAnimationSetRotateKey(D3DRMANIMATIONKEY& rmKey,
const D3DRMQUATERNION& rmQuat)
{
rmKey.dvK[0] = rmQuat.s;
rmKey.dvK[1] = rmQuat.v.x;
rmKey.dvK[2] = rmQuat.v.y;
rmKey.dvK[3] = rmQuat.v.z;
}
inline VOID
D3DRMAnimationSetScaleKey(D3DRMANIMATIONKEY& rmKey,
const D3DVECTOR& dvVec)
{
rmKey.dvK[0] = dvVec.x;
rmKey.dvK[1] = dvVec.y;
rmKey.dvK[2] = dvVec.z;
}
inline VOID
D3DRMAnimationSetPositionKey(D3DRMANIMATIONKEY& rmKey,
const D3DVECTOR& dvVec)
{
rmKey.dvK[0] = dvVec.x;
rmKey.dvK[1] = dvVec.y;
rmKey.dvK[2] = dvVec.z;
}
#endif
#define D3DRMANIMATION_ROTATEKEY 0x01
#define D3DRMANIMATION_SCALEKEY 0x02
#define D3DRMANIMATION_POSITIONKEY 0x03
typedef DWORD D3DRMMAPPING, D3DRMMAPPINGFLAG, *LPD3DRMMAPPING;
static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPU = 1;
static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPV = 2;
static const D3DRMMAPPINGFLAG D3DRMMAP_PERSPCORRECT = 4;
typedef struct _D3DRMVERTEX
{ D3DVECTOR position;
D3DVECTOR normal;
D3DVALUE tu, tv;
D3DCOLOR color;
} D3DRMVERTEX, *LPD3DRMVERTEX;
typedef LONG D3DRMGROUPINDEX; /* group indexes begin a 0 */
static const D3DRMGROUPINDEX D3DRMGROUP_ALLGROUPS = -1;
/*
* Create a color from three components in the range 0-1 inclusive.
*/
extern D3DCOLOR D3DRMAPI D3DRMCreateColorRGB(D3DVALUE red,
D3DVALUE green,
D3DVALUE blue);
/*
* Create a color from four components in the range 0-1 inclusive.
*/
extern D3DCOLOR D3DRMAPI D3DRMCreateColorRGBA(D3DVALUE red,
D3DVALUE green,
D3DVALUE blue,
D3DVALUE alpha);
/*
* Get the red component of a color.
*/
extern D3DVALUE D3DRMAPI D3DRMColorGetRed(D3DCOLOR);
/*
* Get the green component of a color.
*/
extern D3DVALUE D3DRMAPI D3DRMColorGetGreen(D3DCOLOR);
/*
* Get the blue component of a color.
*/
extern D3DVALUE D3DRMAPI D3DRMColorGetBlue(D3DCOLOR);
/*
* Get the alpha component of a color.
*/
extern D3DVALUE D3DRMAPI D3DRMColorGetAlpha(D3DCOLOR);
/*
* Add two vectors. Returns its first argument.
*/
extern LPD3DVECTOR D3DRMAPI D3DRMVectorAdd(LPD3DVECTOR d,
LPD3DVECTOR s1,
LPD3DVECTOR s2);
/*
* Subtract two vectors. Returns its first argument.
*/
extern LPD3DVECTOR D3DRMAPI D3DRMVectorSubtract(LPD3DVECTOR d,
LPD3DVECTOR s1,
LPD3DVECTOR s2);
/*
* Reflect a ray about a given normal. Returns its first argument.
*/
extern LPD3DVECTOR D3DRMAPI D3DRMVectorReflect(LPD3DVECTOR d,
LPD3DVECTOR ray,
LPD3DVECTOR norm);
/*
* Calculate the vector cross product. Returns its first argument.
*/
extern LPD3DVECTOR D3DRMAPI D3DRMVectorCrossProduct(LPD3DVECTOR d,
LPD3DVECTOR s1,
LPD3DVECTOR s2);
/*
* Return the vector dot product.
*/
extern D3DVALUE D3DRMAPI D3DRMVectorDotProduct(LPD3DVECTOR s1,
LPD3DVECTOR s2);
/*
* Scale a vector so that its modulus is 1. Returns its argument or
* NULL if there was an error (e.g. a zero vector was passed).
*/
extern LPD3DVECTOR D3DRMAPI D3DRMVectorNormalize(LPD3DVECTOR);
#define D3DRMVectorNormalise D3DRMVectorNormalize
/*
* Return the length of a vector (e.g. sqrt(x*x + y*y + z*z)).
*/
extern D3DVALUE D3DRMAPI D3DRMVectorModulus(LPD3DVECTOR v);
/*
* Set the rotation part of a matrix to be a rotation of theta radians
* around the given axis.
*/
extern LPD3DVECTOR D3DRMAPI D3DRMVectorRotate(LPD3DVECTOR r, LPD3DVECTOR v, LPD3DVECTOR axis, D3DVALUE theta);
/*
* Scale a vector uniformly in all three axes
*/
extern LPD3DVECTOR D3DRMAPI D3DRMVectorScale(LPD3DVECTOR d, LPD3DVECTOR s, D3DVALUE factor);
/*
* Return a random unit vector
*/
extern LPD3DVECTOR D3DRMAPI D3DRMVectorRandom(LPD3DVECTOR d);
/*
* Returns a unit quaternion that represents a rotation of theta radians
* around the given axis.
*/
extern LPD3DRMQUATERNION D3DRMAPI D3DRMQuaternionFromRotation(LPD3DRMQUATERNION quat,
LPD3DVECTOR v,
D3DVALUE theta);
/*
* Calculate the product of two quaternions
*/
extern LPD3DRMQUATERNION D3DRMAPI D3DRMQuaternionMultiply(LPD3DRMQUATERNION q,
LPD3DRMQUATERNION a,
LPD3DRMQUATERNION b);
/*
* Interpolate between two quaternions
*/
extern LPD3DRMQUATERNION D3DRMAPI D3DRMQuaternionSlerp(LPD3DRMQUATERNION q,
LPD3DRMQUATERNION a,
LPD3DRMQUATERNION b,
D3DVALUE alpha);
/*
* Calculate the matrix for the rotation that a unit quaternion represents
*/
extern void D3DRMAPI D3DRMMatrixFromQuaternion(D3DRMMATRIX4D dmMat, LPD3DRMQUATERNION lpDqQuat);
/*
* Calculate the quaternion that corresponds to a rotation matrix
*/
extern LPD3DRMQUATERNION D3DRMAPI D3DRMQuaternionFromMatrix(LPD3DRMQUATERNION, D3DRMMATRIX4D);
#if defined(__cplusplus)
};
#endif
#endif

1666
third_party/dx9_sdk/include/d3drmobj.h vendored Normal file

File diff suppressed because it is too large Load Diff

50
third_party/dx9_sdk/include/d3drmwin.h vendored Normal file
View File

@ -0,0 +1,50 @@
/*==========================================================================;
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* File: d3drm.h
* Content: Direct3DRM include file
*
***************************************************************************/
#ifndef __D3DRMWIN_H__
#define __D3DRMWIN_H__
#ifndef WIN32
#define WIN32
#endif
#include "d3drm.h"
#include "ddraw.h"
#include "d3d.h"
/*
* GUIDS used by Direct3DRM Windows interface
*/
DEFINE_GUID(IID_IDirect3DRMWinDevice, 0xc5016cc0, 0xd273, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
WIN_TYPES(IDirect3DRMWinDevice, DIRECT3DRMWINDEVICE);
#undef INTERFACE
#define INTERFACE IDirect3DRMWinDevice
DECLARE_INTERFACE_(IDirect3DRMWinDevice, IDirect3DRMObject)
{
IUNKNOWN_METHODS(PURE);
IDIRECT3DRMOBJECT_METHODS(PURE);
/*
* IDirect3DRMWinDevice methods
*/
/* Repaint the window with the last frame which was rendered. */
STDMETHOD(HandlePaint)(THIS_ HDC hdc) PURE;
/* Respond to a WM_ACTIVATE message. */
STDMETHOD(HandleActivate)(THIS_ WORD wparam) PURE;
};
#endif

2119
third_party/dx9_sdk/include/d3dtypes.h vendored Normal file

File diff suppressed because it is too large Load Diff

255
third_party/dx9_sdk/include/d3dvec.inl vendored Normal file
View File

@ -0,0 +1,255 @@
/******************************************************************
* *
* D3DVec.inl *
* *
* Float-valued 3D vector class for Direct3D. *
* *
* Copyright (c) Microsoft Corp. All rights reserved. *
* *
******************************************************************/
#include <math.h>
// =====================================
// Constructors
// =====================================
inline
_D3DVECTOR::_D3DVECTOR(D3DVALUE f)
{
x = y = z = f;
}
inline
_D3DVECTOR::_D3DVECTOR(D3DVALUE _x, D3DVALUE _y, D3DVALUE _z)
{
x = _x; y = _y; z = _z;
}
inline
_D3DVECTOR::_D3DVECTOR(const D3DVALUE f[3])
{
x = f[0]; y = f[1]; z = f[2];
}
// =====================================
// Access grants
// =====================================
inline const D3DVALUE&
_D3DVECTOR::operator[](int i) const
{
return (&x)[i];
}
inline D3DVALUE&
_D3DVECTOR::operator[](int i)
{
return (&x)[i];
}
// =====================================
// Assignment operators
// =====================================
inline _D3DVECTOR&
_D3DVECTOR::operator += (const _D3DVECTOR& v)
{
x += v.x; y += v.y; z += v.z;
return *this;
}
inline _D3DVECTOR&
_D3DVECTOR::operator -= (const _D3DVECTOR& v)
{
x -= v.x; y -= v.y; z -= v.z;
return *this;
}
inline _D3DVECTOR&
_D3DVECTOR::operator *= (const _D3DVECTOR& v)
{
x *= v.x; y *= v.y; z *= v.z;
return *this;
}
inline _D3DVECTOR&
_D3DVECTOR::operator /= (const _D3DVECTOR& v)
{
x /= v.x; y /= v.y; z /= v.z;
return *this;
}
inline _D3DVECTOR&
_D3DVECTOR::operator *= (D3DVALUE s)
{
x *= s; y *= s; z *= s;
return *this;
}
inline _D3DVECTOR&
_D3DVECTOR::operator /= (D3DVALUE s)
{
x /= s; y /= s; z /= s;
return *this;
}
inline _D3DVECTOR
operator + (const _D3DVECTOR& v)
{
return v;
}
inline _D3DVECTOR
operator - (const _D3DVECTOR& v)
{
return _D3DVECTOR(-v.x, -v.y, -v.z);
}
inline _D3DVECTOR
operator + (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
{
return _D3DVECTOR(v1.x+v2.x, v1.y+v2.y, v1.z+v2.z);
}
inline _D3DVECTOR
operator - (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
{
return _D3DVECTOR(v1.x-v2.x, v1.y-v2.y, v1.z-v2.z);
}
inline _D3DVECTOR
operator * (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
{
return _D3DVECTOR(v1.x*v2.x, v1.y*v2.y, v1.z*v2.z);
}
inline _D3DVECTOR
operator / (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
{
return _D3DVECTOR(v1.x/v2.x, v1.y/v2.y, v1.z/v2.z);
}
inline int
operator < (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
{
return v1[0] < v2[0] && v1[1] < v2[1] && v1[2] < v2[2];
}
inline int
operator <= (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
{
return v1[0] <= v2[0] && v1[1] <= v2[1] && v1[2] <= v2[2];
}
inline _D3DVECTOR
operator * (const _D3DVECTOR& v, D3DVALUE s)
{
return _D3DVECTOR(s*v.x, s*v.y, s*v.z);
}
inline _D3DVECTOR
operator * (D3DVALUE s, const _D3DVECTOR& v)
{
return _D3DVECTOR(s*v.x, s*v.y, s*v.z);
}
inline _D3DVECTOR
operator / (const _D3DVECTOR& v, D3DVALUE s)
{
return _D3DVECTOR(v.x/s, v.y/s, v.z/s);
}
inline int
operator == (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
{
return v1.x==v2.x && v1.y==v2.y && v1.z == v2.z;
}
inline D3DVALUE
Magnitude (const _D3DVECTOR& v)
{
return (D3DVALUE) sqrt(SquareMagnitude(v));
}
inline D3DVALUE
SquareMagnitude (const _D3DVECTOR& v)
{
return v.x*v.x + v.y*v.y + v.z*v.z;
}
inline _D3DVECTOR
Normalize (const _D3DVECTOR& v)
{
return v / Magnitude(v);
}
inline D3DVALUE
Min (const _D3DVECTOR& v)
{
D3DVALUE ret = v.x;
if (v.y < ret) ret = v.y;
if (v.z < ret) ret = v.z;
return ret;
}
inline D3DVALUE
Max (const _D3DVECTOR& v)
{
D3DVALUE ret = v.x;
if (ret < v.y) ret = v.y;
if (ret < v.z) ret = v.z;
return ret;
}
inline _D3DVECTOR
Minimize (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
{
return _D3DVECTOR( v1[0] < v2[0] ? v1[0] : v2[0],
v1[1] < v2[1] ? v1[1] : v2[1],
v1[2] < v2[2] ? v1[2] : v2[2]);
}
inline _D3DVECTOR
Maximize (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
{
return _D3DVECTOR( v1[0] > v2[0] ? v1[0] : v2[0],
v1[1] > v2[1] ? v1[1] : v2[1],
v1[2] > v2[2] ? v1[2] : v2[2]);
}
inline D3DVALUE
DotProduct (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
{
return v1.x*v2.x + v1.y * v2.y + v1.z*v2.z;
}
inline _D3DVECTOR
CrossProduct (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
{
_D3DVECTOR result;
result[0] = v1[1] * v2[2] - v1[2] * v2[1];
result[1] = v1[2] * v2[0] - v1[0] * v2[2];
result[2] = v1[0] * v2[1] - v1[1] * v2[0];
return result;
}
inline _D3DMATRIX
operator* (const _D3DMATRIX& a, const _D3DMATRIX& b)
{
_D3DMATRIX ret;
for (int i=0; i<4; i++) {
for (int j=0; j<4; j++) {
ret(i, j) = 0.0f;
for (int k=0; k<4; k++) {
ret(i, j) += a(i, k) * b(k, j);
}
}
}
return ret;
}

26
third_party/dx9_sdk/include/d3dx.h vendored Normal file
View File

@ -0,0 +1,26 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx.h
// Content: D3DX utility library
//
///////////////////////////////////////////////////////////////////////////
#ifndef __D3DX_H__
#define __D3DX_H__
#ifndef D3DXINLINE
#ifdef __cplusplus
#define D3DXINLINE inline
#else
#define D3DXINLINE _inline
#endif
#endif
#include "d3dxcore.h"
#include "d3dxmath.h"
#include "d3dxshapes.h"
#include "d3dxsprite.h"
#endif //__D3DX_H__

45
third_party/dx9_sdk/include/d3dx8.h vendored Normal file
View File

@ -0,0 +1,45 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx8.h
// Content: D3DX utility library
//
///////////////////////////////////////////////////////////////////////////
#ifndef __D3DX8_H__
#define __D3DX8_H__
#include "d3d8.h"
#include <limits.h>
#ifndef D3DXINLINE
#ifdef _MSC_VER
#if (_MSC_VER >= 1200)
#define D3DXINLINE __forceinline
#else
#define D3DXINLINE __inline
#endif
#else
#ifdef __cplusplus
#define D3DXINLINE inline
#else
#define D3DXINLINE
#endif
#endif
#endif
#define D3DX_DEFAULT ULONG_MAX
#define D3DX_DEFAULT_FLOAT FLT_MAX
#include "d3dx8math.h"
#include "d3dx8core.h"
#include "d3dx8tex.h"
#include "d3dx8mesh.h"
#include "d3dx8shape.h"
#include "d3dx8effect.h"
#endif //__D3DX8_H__

563
third_party/dx9_sdk/include/d3dx8core.h vendored Normal file
View File

@ -0,0 +1,563 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx8core.h
// Content: D3DX core types and functions
//
///////////////////////////////////////////////////////////////////////////
#include "d3dx8.h"
#ifndef __D3DX8CORE_H__
#define __D3DX8CORE_H__
///////////////////////////////////////////////////////////////////////////
// ID3DXBuffer:
// ------------
// The buffer object is used by D3DX to return arbitrary size data.
//
// GetBufferPointer -
// Returns a pointer to the beginning of the buffer.
//
// GetBufferSize -
// Returns the size of the buffer, in bytes.
///////////////////////////////////////////////////////////////////////////
typedef interface ID3DXBuffer ID3DXBuffer;
typedef interface ID3DXBuffer *LPD3DXBUFFER;
// {932E6A7E-C68E-45dd-A7BF-53D19C86DB1F}
DEFINE_GUID(IID_ID3DXBuffer,
0x932e6a7e, 0xc68e, 0x45dd, 0xa7, 0xbf, 0x53, 0xd1, 0x9c, 0x86, 0xdb, 0x1f);
#undef INTERFACE
#define INTERFACE ID3DXBuffer
DECLARE_INTERFACE_(ID3DXBuffer, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXBuffer
STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
};
///////////////////////////////////////////////////////////////////////////
// ID3DXFont:
// ----------
// Font objects contain the textures and resources needed to render
// a specific font on a specific device.
//
// Begin -
// Prepartes device for drawing text. This is optional.. if DrawText
// is called outside of Begin/End, it will call Begin and End for you.
//
// DrawText -
// Draws formatted text on a D3D device. Some parameters are
// surprisingly similar to those of GDI's DrawText function. See GDI
// documentation for a detailed description of these parameters.
//
// End -
// Restores device state to how it was when Begin was called.
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
//
///////////////////////////////////////////////////////////////////////////
typedef interface ID3DXFont ID3DXFont;
typedef interface ID3DXFont *LPD3DXFONT;
// {89FAD6A5-024D-49af-8FE7-F51123B85E25}
DEFINE_GUID( IID_ID3DXFont,
0x89fad6a5, 0x24d, 0x49af, 0x8f, 0xe7, 0xf5, 0x11, 0x23, 0xb8, 0x5e, 0x25);
#undef INTERFACE
#define INTERFACE ID3DXFont
DECLARE_INTERFACE_(ID3DXFont, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXFont
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
STDMETHOD(GetLogFont)(THIS_ LOGFONT* pLogFont) PURE;
STDMETHOD(Begin)(THIS) PURE;
STDMETHOD_(INT, DrawTextA)(THIS_ LPCSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
STDMETHOD_(INT, DrawTextW)(THIS_ LPCWSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
STDMETHOD(End)(THIS) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifndef DrawText
#ifdef UNICODE
#define DrawText DrawTextW
#else
#define DrawText DrawTextA
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateFont(
LPDIRECT3DDEVICE8 pDevice,
HFONT hFont,
LPD3DXFONT* ppFont);
HRESULT WINAPI
D3DXCreateFontIndirect(
LPDIRECT3DDEVICE8 pDevice,
CONST LOGFONT* pLogFont,
LPD3DXFONT* ppFont);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXSprite:
// ------------
// This object intends to provide an easy way to drawing sprites using D3D.
//
// Begin -
// Prepares device for drawing sprites
//
// Draw, DrawAffine, DrawTransform -
// Draws a sprite in screen-space. Before transformation, the sprite is
// the size of SrcRect, with its top-left corner at the origin (0,0).
// The color and alpha channels are modulated by Color.
//
// End -
// Restores device state to how it was when Begin was called.
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
///////////////////////////////////////////////////////////////////////////
typedef interface ID3DXSprite ID3DXSprite;
typedef interface ID3DXSprite *LPD3DXSPRITE;
// {13D69D15-F9B0-4e0f-B39E-C91EB33F6CE7}
DEFINE_GUID( IID_ID3DXSprite,
0x13d69d15, 0xf9b0, 0x4e0f, 0xb3, 0x9e, 0xc9, 0x1e, 0xb3, 0x3f, 0x6c, 0xe7);
#undef INTERFACE
#define INTERFACE ID3DXSprite
DECLARE_INTERFACE_(ID3DXSprite, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXSprite
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
STDMETHOD(Begin)(THIS) PURE;
STDMETHOD(Draw)(THIS_ LPDIRECT3DTEXTURE8 pSrcTexture,
CONST RECT* pSrcRect, CONST D3DXVECTOR2* pScaling,
CONST D3DXVECTOR2* pRotationCenter, FLOAT Rotation,
CONST D3DXVECTOR2* pTranslation, D3DCOLOR Color) PURE;
STDMETHOD(DrawTransform)(THIS_ LPDIRECT3DTEXTURE8 pSrcTexture,
CONST RECT* pSrcRect, CONST D3DXMATRIX* pTransform,
D3DCOLOR Color) PURE;
STDMETHOD(End)(THIS) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateSprite(
LPDIRECT3DDEVICE8 pDevice,
LPD3DXSPRITE* ppSprite);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXRenderToSurface:
// ---------------------
// This object abstracts rendering to surfaces. These surfaces do not
// necessarily need to be render targets. If they are not, a compatible
// render target is used, and the result copied into surface at end scene.
//
// BeginScene, EndScene -
// Call BeginScene() and EndScene() at the beginning and ending of your
// scene. These calls will setup and restore render targets, viewports,
// etc..
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
///////////////////////////////////////////////////////////////////////////
typedef struct _D3DXRTS_DESC
{
UINT Width;
UINT Height;
D3DFORMAT Format;
BOOL DepthStencil;
D3DFORMAT DepthStencilFormat;
} D3DXRTS_DESC;
typedef interface ID3DXRenderToSurface ID3DXRenderToSurface;
typedef interface ID3DXRenderToSurface *LPD3DXRENDERTOSURFACE;
// {82DF5B90-E34E-496e-AC1C-62117A6A5913}
DEFINE_GUID( IID_ID3DXRenderToSurface,
0x82df5b90, 0xe34e, 0x496e, 0xac, 0x1c, 0x62, 0x11, 0x7a, 0x6a, 0x59, 0x13);
#undef INTERFACE
#define INTERFACE ID3DXRenderToSurface
DECLARE_INTERFACE_(ID3DXRenderToSurface, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXRenderToSurface
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
STDMETHOD(GetDesc)(THIS_ D3DXRTS_DESC* pDesc) PURE;
STDMETHOD(BeginScene)(THIS_ LPDIRECT3DSURFACE8 pSurface, CONST D3DVIEWPORT8* pViewport) PURE;
STDMETHOD(EndScene)(THIS) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateRenderToSurface(
LPDIRECT3DDEVICE8 pDevice,
UINT Width,
UINT Height,
D3DFORMAT Format,
BOOL DepthStencil,
D3DFORMAT DepthStencilFormat,
LPD3DXRENDERTOSURFACE* ppRenderToSurface);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXRenderToEnvMap:
// --------------------
// This object abstracts rendering to environment maps. These surfaces
// do not necessarily need to be render targets. If they are not, a
// compatible render target is used, and the result copied into the
// environment map at end scene.
//
// BeginCube, BeginSphere, BeginHemisphere, BeginParabolic -
// This function initiates the rendering of the environment map. As
// parameters, you pass the textures in which will get filled in with
// the resulting environment map.
//
// Face -
// Call this function to initiate the drawing of each face. For each
// environment map, you will call this six times.. once for each face
// in D3DCUBEMAP_FACES.
//
// End -
// This will restore all render targets, and if needed compose all the
// rendered faces into the environment map surfaces.
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
///////////////////////////////////////////////////////////////////////////
typedef struct _D3DXRTE_DESC
{
UINT Size;
D3DFORMAT Format;
BOOL DepthStencil;
D3DFORMAT DepthStencilFormat;
} D3DXRTE_DESC;
typedef interface ID3DXRenderToEnvMap ID3DXRenderToEnvMap;
typedef interface ID3DXRenderToEnvMap *LPD3DXRenderToEnvMap;
// {4E42C623-9451-44b7-8C86-ABCCDE5D52C8}
DEFINE_GUID( IID_ID3DXRenderToEnvMap,
0x4e42c623, 0x9451, 0x44b7, 0x8c, 0x86, 0xab, 0xcc, 0xde, 0x5d, 0x52, 0xc8);
#undef INTERFACE
#define INTERFACE ID3DXRenderToEnvMap
DECLARE_INTERFACE_(ID3DXRenderToEnvMap, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXRenderToEnvMap
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
STDMETHOD(GetDesc)(THIS_ D3DXRTE_DESC* pDesc) PURE;
STDMETHOD(BeginCube)(THIS_
LPDIRECT3DCUBETEXTURE8 pCubeTex) PURE;
STDMETHOD(BeginSphere)(THIS_
LPDIRECT3DTEXTURE8 pTex) PURE;
STDMETHOD(BeginHemisphere)(THIS_
LPDIRECT3DTEXTURE8 pTexZPos,
LPDIRECT3DTEXTURE8 pTexZNeg) PURE;
STDMETHOD(BeginParabolic)(THIS_
LPDIRECT3DTEXTURE8 pTexZPos,
LPDIRECT3DTEXTURE8 pTexZNeg) PURE;
STDMETHOD(Face)(THIS_ D3DCUBEMAP_FACES Face) PURE;
STDMETHOD(End)(THIS) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateRenderToEnvMap(
LPDIRECT3DDEVICE8 pDevice,
UINT Size,
D3DFORMAT Format,
BOOL DepthStencil,
D3DFORMAT DepthStencilFormat,
LPD3DXRenderToEnvMap* ppRenderToEnvMap);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// Shader assemblers:
///////////////////////////////////////////////////////////////////////////
//-------------------------------------------------------------------------
// D3DXASM flags:
// --------------
//
// D3DXASM_DEBUG
// Generate debug info.
//
// D3DXASM_SKIPVALIDATION
// Do not validate the generated code against known capabilities and
// constraints. This option is only recommended when assembling shaders
// you KNOW will work. (ie. have assembled before without this option.)
//-------------------------------------------------------------------------
#define D3DXASM_DEBUG (1 << 0)
#define D3DXASM_SKIPVALIDATION (1 << 1)
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//-------------------------------------------------------------------------
// D3DXAssembleShader:
// -------------------
// Assembles an ascii description of a vertex or pixel shader into
// binary form.
//
// Parameters:
// pSrcFile
// Source file name
// hSrcModule
// Module handle. if NULL, current module will be used.
// pSrcResource
// Resource name in module
// pSrcData
// Pointer to source code
// SrcDataLen
// Size of source code, in bytes
// Flags
// D3DXASM_xxx flags
// ppConstants
// Returns an ID3DXBuffer object containing constant declarations.
// ppCompiledShader
// Returns an ID3DXBuffer object containing the object code.
// ppCompilationErrors
// Returns an ID3DXBuffer object containing ascii error messages
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXAssembleShaderFromFileA(
LPCSTR pSrcFile,
DWORD Flags,
LPD3DXBUFFER* ppConstants,
LPD3DXBUFFER* ppCompiledShader,
LPD3DXBUFFER* ppCompilationErrors);
HRESULT WINAPI
D3DXAssembleShaderFromFileW(
LPCWSTR pSrcFile,
DWORD Flags,
LPD3DXBUFFER* ppConstants,
LPD3DXBUFFER* ppCompiledShader,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef UNICODE
#define D3DXAssembleShaderFromFile D3DXAssembleShaderFromFileW
#else
#define D3DXAssembleShaderFromFile D3DXAssembleShaderFromFileA
#endif
HRESULT WINAPI
D3DXAssembleShaderFromResourceA(
HMODULE hSrcModule,
LPCSTR pSrcResource,
DWORD Flags,
LPD3DXBUFFER* ppConstants,
LPD3DXBUFFER* ppCompiledShader,
LPD3DXBUFFER* ppCompilationErrors);
HRESULT WINAPI
D3DXAssembleShaderFromResourceW(
HMODULE hSrcModule,
LPCWSTR pSrcResource,
DWORD Flags,
LPD3DXBUFFER* ppConstants,
LPD3DXBUFFER* ppCompiledShader,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef UNICODE
#define D3DXAssembleShaderFromResource D3DXAssembleShaderFromResourceW
#else
#define D3DXAssembleShaderFromResource D3DXAssembleShaderFromResourceA
#endif
HRESULT WINAPI
D3DXAssembleShader(
LPCVOID pSrcData,
UINT SrcDataLen,
DWORD Flags,
LPD3DXBUFFER* ppConstants,
LPD3DXBUFFER* ppCompiledShader,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// Misc APIs:
///////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//-------------------------------------------------------------------------
// D3DXGetErrorString:
// ------------------
// Returns the error string for given an hresult. Interprets all D3DX and
// D3D hresults.
//
// Parameters:
// hr
// The error code to be deciphered.
// pBuffer
// Pointer to the buffer to be filled in.
// BufferLen
// Count of characters in buffer. Any error message longer than this
// length will be truncated to fit.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXGetErrorStringA(
HRESULT hr,
LPSTR pBuffer,
UINT BufferLen);
HRESULT WINAPI
D3DXGetErrorStringW(
HRESULT hr,
LPWSTR pBuffer,
UINT BufferLen);
#ifdef UNICODE
#define D3DXGetErrorString D3DXGetErrorStringW
#else
#define D3DXGetErrorString D3DXGetErrorStringA
#endif
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DX8CORE_H__

View File

@ -0,0 +1,226 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx8effect.h
// Content: D3DX effect types and functions
//
///////////////////////////////////////////////////////////////////////////
#include "d3dx8.h"
#ifndef __D3DX8EFFECT_H__
#define __D3DX8EFFECT_H__
#define D3DXFX_DONOTSAVESTATE (1 << 0)
typedef enum _D3DXPARAMETERTYPE
{
D3DXPT_DWORD = 0,
D3DXPT_FLOAT = 1,
D3DXPT_VECTOR = 2,
D3DXPT_MATRIX = 3,
D3DXPT_TEXTURE = 4,
D3DXPT_VERTEXSHADER = 5,
D3DXPT_PIXELSHADER = 6,
D3DXPT_CONSTANT = 7,
D3DXPT_STRING = 8,
D3DXPT_FORCE_DWORD = 0x7fffffff /* force 32-bit size enum */
} D3DXPARAMETERTYPE;
typedef struct _D3DXEFFECT_DESC
{
UINT Parameters;
UINT Techniques;
} D3DXEFFECT_DESC;
typedef struct _D3DXPARAMETER_DESC
{
LPCSTR Name;
LPCSTR Index;
D3DXPARAMETERTYPE Type;
} D3DXPARAMETER_DESC;
typedef struct _D3DXTECHNIQUE_DESC
{
LPCSTR Name;
LPCSTR Index;
UINT Passes;
} D3DXTECHNIQUE_DESC;
typedef struct _D3DXPASS_DESC
{
LPCSTR Name;
LPCSTR Index;
} D3DXPASS_DESC;
//////////////////////////////////////////////////////////////////////////////
// ID3DXEffect ///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
typedef interface ID3DXEffect ID3DXEffect;
typedef interface ID3DXEffect *LPD3DXEFFECT;
// {648B1CEB-8D4E-4d66-B6FA-E44969E82E89}
DEFINE_GUID( IID_ID3DXEffect,
0x648b1ceb, 0x8d4e, 0x4d66, 0xb6, 0xfa, 0xe4, 0x49, 0x69, 0xe8, 0x2e, 0x89);
#undef INTERFACE
#define INTERFACE ID3DXEffect
DECLARE_INTERFACE_(ID3DXEffect, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXEffect
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
STDMETHOD(GetParameterDesc)(THIS_ LPCSTR pParameter, D3DXPARAMETER_DESC* pDesc) PURE;
STDMETHOD(GetTechniqueDesc)(THIS_ LPCSTR pTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
STDMETHOD(GetPassDesc)(THIS_ LPCSTR pTechnique, LPCSTR pPass, D3DXPASS_DESC* pDesc) PURE;
STDMETHOD(FindNextValidTechnique)(THIS_ LPCSTR pTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
STDMETHOD(CloneEffect)(THIS_ LPDIRECT3DDEVICE8 pDevice, LPD3DXEFFECT* ppEffect) PURE;
STDMETHOD(GetCompiledEffect)(THIS_ LPD3DXBUFFER* ppCompiledEffect) PURE;
STDMETHOD(SetTechnique)(THIS_ LPCSTR pTechnique) PURE;
STDMETHOD(GetTechnique)(THIS_ LPCSTR* ppTechnique) PURE;
STDMETHOD(SetDword)(THIS_ LPCSTR pParameter, DWORD dw) PURE;
STDMETHOD(GetDword)(THIS_ LPCSTR pParameter, DWORD* pdw) PURE;
STDMETHOD(SetFloat)(THIS_ LPCSTR pParameter, FLOAT f) PURE;
STDMETHOD(GetFloat)(THIS_ LPCSTR pParameter, FLOAT* pf) PURE;
STDMETHOD(SetVector)(THIS_ LPCSTR pParameter, CONST D3DXVECTOR4* pVector) PURE;
STDMETHOD(GetVector)(THIS_ LPCSTR pParameter, D3DXVECTOR4* pVector) PURE;
STDMETHOD(SetMatrix)(THIS_ LPCSTR pParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrix)(THIS_ LPCSTR pParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetTexture)(THIS_ LPCSTR pParameter, LPDIRECT3DBASETEXTURE8 pTexture) PURE;
STDMETHOD(GetTexture)(THIS_ LPCSTR pParameter, LPDIRECT3DBASETEXTURE8 *ppTexture) PURE;
STDMETHOD(SetVertexShader)(THIS_ LPCSTR pParameter, DWORD Handle) PURE;
STDMETHOD(GetVertexShader)(THIS_ LPCSTR pParameter, DWORD* pHandle) PURE;
STDMETHOD(SetPixelShader)(THIS_ LPCSTR pParameter, DWORD Handle) PURE;
STDMETHOD(GetPixelShader)(THIS_ LPCSTR pParameter, DWORD* pHandle) PURE;
STDMETHOD(SetString)(THIS_ LPCSTR pParameter, LPCSTR pString) PURE;
STDMETHOD(GetString)(THIS_ LPCSTR pParameter, LPCSTR* ppString) PURE;
STDMETHOD_(BOOL, IsParameterUsed)(THIS_ LPCSTR pParameter) PURE;
STDMETHOD(Validate)(THIS) PURE;
STDMETHOD(Begin)(THIS_ UINT *pPasses, DWORD Flags) PURE;
STDMETHOD(Pass)(THIS_ UINT Pass) PURE;
STDMETHOD(End)(THIS) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// APIs //////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//----------------------------------------------------------------------------
// D3DXCreateEffect:
// -----------------
// Creates an effect from an ascii or binaray effect description.
//
// Parameters:
// pDevice
// Pointer of the device on which to create the effect
// pSrcFile
// Name of the file containing the effect description
// hSrcModule
// Module handle. if NULL, current module will be used.
// pSrcResource
// Resource name in module
// pSrcData
// Pointer to effect description
// SrcDataSize
// Size of the effect description in bytes
// ppEffect
// Returns a buffer containing created effect.
// ppCompilationErrors
// Returns a buffer containing any error messages which occurred during
// compile. Or NULL if you do not care about the error messages.
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateEffectFromFileA(
LPDIRECT3DDEVICE8 pDevice,
LPCSTR pSrcFile,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
HRESULT WINAPI
D3DXCreateEffectFromFileW(
LPDIRECT3DDEVICE8 pDevice,
LPCWSTR pSrcFile,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef UNICODE
#define D3DXCreateEffectFromFile D3DXCreateEffectFromFileW
#else
#define D3DXCreateEffectFromFile D3DXCreateEffectFromFileA
#endif
HRESULT WINAPI
D3DXCreateEffectFromResourceA(
LPDIRECT3DDEVICE8 pDevice,
HMODULE hSrcModule,
LPCSTR pSrcResource,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
HRESULT WINAPI
D3DXCreateEffectFromResourceW(
LPDIRECT3DDEVICE8 pDevice,
HMODULE hSrcModule,
LPCWSTR pSrcResource,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef UNICODE
#define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceW
#else
#define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceA
#endif
HRESULT WINAPI
D3DXCreateEffect(
LPDIRECT3DDEVICE8 pDevice,
LPCVOID pSrcData,
UINT SrcDataSize,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DX8EFFECT_H__

1215
third_party/dx9_sdk/include/d3dx8math.h vendored Normal file

File diff suppressed because it is too large Load Diff

1757
third_party/dx9_sdk/include/d3dx8math.inl vendored Normal file

File diff suppressed because it is too large Load Diff

760
third_party/dx9_sdk/include/d3dx8mesh.h vendored Normal file
View File

@ -0,0 +1,760 @@
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx8mesh.h
// Content: D3DX mesh types and functions
//
//////////////////////////////////////////////////////////////////////////////
#include "d3dx8.h"
#ifndef __D3DX8MESH_H__
#define __D3DX8MESH_H__
#include "dxfile.h" // defines LPDIRECTXFILEDATA
// {2A835771-BF4D-43f4-8E14-82A809F17D8A}
DEFINE_GUID(IID_ID3DXBaseMesh,
0x2a835771, 0xbf4d, 0x43f4, 0x8e, 0x14, 0x82, 0xa8, 0x9, 0xf1, 0x7d, 0x8a);
// {CCAE5C3B-4DD1-4d0f-997E-4684CA64557F}
DEFINE_GUID(IID_ID3DXMesh,
0xccae5c3b, 0x4dd1, 0x4d0f, 0x99, 0x7e, 0x46, 0x84, 0xca, 0x64, 0x55, 0x7f);
// {19FBE386-C282-4659-97BD-CB869B084A6C}
DEFINE_GUID(IID_ID3DXPMesh,
0x19fbe386, 0xc282, 0x4659, 0x97, 0xbd, 0xcb, 0x86, 0x9b, 0x8, 0x4a, 0x6c);
// {4E3CA05C-D4FF-4d11-8A02-16459E08F6F4}
DEFINE_GUID(IID_ID3DXSPMesh,
0x4e3ca05c, 0xd4ff, 0x4d11, 0x8a, 0x2, 0x16, 0x45, 0x9e, 0x8, 0xf6, 0xf4);
// {8DB06ECC-EBFC-408a-9404-3074B4773515}
DEFINE_GUID(IID_ID3DXSkinMesh,
0x8db06ecc, 0xebfc, 0x408a, 0x94, 0x4, 0x30, 0x74, 0xb4, 0x77, 0x35, 0x15);
// Mesh options - lower 3 bytes only, upper byte used by _D3DXMESHOPT option flags
enum _D3DXMESH {
D3DXMESH_32BIT = 0x001, // If set, then use 32 bit indices, if not set use 16 bit indices.
D3DXMESH_DONOTCLIP = 0x002, // Use D3DUSAGE_DONOTCLIP for VB & IB.
D3DXMESH_POINTS = 0x004, // Use D3DUSAGE_POINTS for VB & IB.
D3DXMESH_RTPATCHES = 0x008, // Use D3DUSAGE_RTPATCHES for VB & IB.
D3DXMESH_NPATCHES = 0x4000,// Use D3DUSAGE_NPATCHES for VB & IB.
D3DXMESH_VB_SYSTEMMEM = 0x010, // Use D3DPOOL_SYSTEMMEM for VB. Overrides D3DXMESH_MANAGEDVERTEXBUFFER
D3DXMESH_VB_MANAGED = 0x020, // Use D3DPOOL_MANAGED for VB.
D3DXMESH_VB_WRITEONLY = 0x040, // Use D3DUSAGE_WRITEONLY for VB.
D3DXMESH_VB_DYNAMIC = 0x080, // Use D3DUSAGE_DYNAMIC for VB.
D3DXMESH_VB_SOFTWAREPROCESSING = 0x8000, // Use D3DUSAGE_SOFTWAREPROCESSING for VB.
D3DXMESH_IB_SYSTEMMEM = 0x100, // Use D3DPOOL_SYSTEMMEM for IB. Overrides D3DXMESH_MANAGEDINDEXBUFFER
D3DXMESH_IB_MANAGED = 0x200, // Use D3DPOOL_MANAGED for IB.
D3DXMESH_IB_WRITEONLY = 0x400, // Use D3DUSAGE_WRITEONLY for IB.
D3DXMESH_IB_DYNAMIC = 0x800, // Use D3DUSAGE_DYNAMIC for IB.
D3DXMESH_IB_SOFTWAREPROCESSING= 0x10000, // Use D3DUSAGE_SOFTWAREPROCESSING for IB.
D3DXMESH_VB_SHARE = 0x1000, // Valid for Clone* calls only, forces cloned mesh/pmesh to share vertex buffer
D3DXMESH_USEHWONLY = 0x2000, // Valid for ID3DXSkinMesh::ConvertToBlendedMesh
// Helper options
D3DXMESH_SYSTEMMEM = 0x110, // D3DXMESH_VB_SYSTEMMEM | D3DXMESH_IB_SYSTEMMEM
D3DXMESH_MANAGED = 0x220, // D3DXMESH_VB_MANAGED | D3DXMESH_IB_MANAGED
D3DXMESH_WRITEONLY = 0x440, // D3DXMESH_VB_WRITEONLY | D3DXMESH_IB_WRITEONLY
D3DXMESH_DYNAMIC = 0x880, // D3DXMESH_VB_DYNAMIC | D3DXMESH_IB_DYNAMIC
D3DXMESH_SOFTWAREPROCESSING = 0x18000, // D3DXMESH_VB_SOFTWAREPROCESSING | D3DXMESH_IB_SOFTWAREPROCESSING
};
// option field values for specifying min value in D3DXGeneratePMesh and D3DXSimplifyMesh
enum _D3DXMESHSIMP
{
D3DXMESHSIMP_VERTEX = 0x1,
D3DXMESHSIMP_FACE = 0x2,
};
enum _MAX_FVF_DECL_SIZE
{
MAX_FVF_DECL_SIZE = 20
};
typedef struct ID3DXBaseMesh *LPD3DXBASEMESH;
typedef struct ID3DXMesh *LPD3DXMESH;
typedef struct ID3DXPMesh *LPD3DXPMESH;
typedef struct ID3DXSPMesh *LPD3DXSPMESH;
typedef struct ID3DXSkinMesh *LPD3DXSKINMESH;
typedef struct _D3DXATTRIBUTERANGE
{
DWORD AttribId;
DWORD FaceStart;
DWORD FaceCount;
DWORD VertexStart;
DWORD VertexCount;
} D3DXATTRIBUTERANGE;
typedef D3DXATTRIBUTERANGE* LPD3DXATTRIBUTERANGE;
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
struct D3DXMATERIAL
{
D3DMATERIAL8 MatD3D;
LPSTR pTextureFilename;
};
typedef struct D3DXMATERIAL *LPD3DXMATERIAL;
#ifdef __cplusplus
}
#endif //__cplusplus
typedef struct _D3DXATTRIBUTEWEIGHTS
{
FLOAT Position;
FLOAT Boundary;
FLOAT Normal;
FLOAT Diffuse;
FLOAT Specular;
FLOAT Tex[8];
} D3DXATTRIBUTEWEIGHTS;
typedef D3DXATTRIBUTEWEIGHTS* LPD3DXATTRIBUTEWEIGHTS;
enum _D3DXWELDEPSILONSFLAGS
{
D3DXWELDEPSILONS_WELDALL = 0x1, // weld all vertices marked by adjacency as being overlapping
D3DXWELDEPSILONS_WELDPARTIALMATCHES = 0x2, // if a given vertex component is within epsilon, modify partial matched
// vertices so that both components identical AND if all components "equal"
// remove one of the vertices
D3DXWELDEPSILONS_DONOTREMOVEVERTICES = 0x4, // instructs weld to only allow modifications to vertices and not removal
// ONLY valid if D3DXWELDEPSILONS_WELDPARTIALMATCHES is set
// useful to modify vertices to be equal, but not allow vertices to be removed
};
typedef struct _D3DXWELDEPSILONS
{
FLOAT SkinWeights;
FLOAT Normal;
FLOAT Tex[8];
DWORD Flags;
} D3DXWELDEPSILONS;
typedef D3DXWELDEPSILONS* LPD3DXWELDEPSILONS;
#undef INTERFACE
#define INTERFACE ID3DXBaseMesh
DECLARE_INTERFACE_(ID3DXBaseMesh, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXBaseMesh
STDMETHOD(DrawSubset)(THIS_ DWORD AttribId) PURE;
STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
DWORD FVF, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
STDMETHOD(CloneMesh)(THIS_ DWORD Options,
CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
STDMETHOD(LockVertexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
STDMETHOD(LockIndexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
STDMETHOD(GetAttributeTable)(
THIS_ D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) PURE;
STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* pPRep, DWORD* pAdjacency) PURE;
STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* pAdjacency, DWORD* pPRep) PURE;
STDMETHOD(GenerateAdjacency)(THIS_ FLOAT Epsilon, DWORD* pAdjacency) PURE;
};
#undef INTERFACE
#define INTERFACE ID3DXMesh
DECLARE_INTERFACE_(ID3DXMesh, ID3DXBaseMesh)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXBaseMesh
STDMETHOD(DrawSubset)(THIS_ DWORD AttribId) PURE;
STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
DWORD FVF, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
STDMETHOD(CloneMesh)(THIS_ DWORD Options,
CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
STDMETHOD(LockVertexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
STDMETHOD(LockIndexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
STDMETHOD(GetAttributeTable)(
THIS_ D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) PURE;
STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* pPRep, DWORD* pAdjacency) PURE;
STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* pAdjacency, DWORD* pPRep) PURE;
STDMETHOD(GenerateAdjacency)(THIS_ FLOAT Epsilon, DWORD* pAdjacency) PURE;
// ID3DXMesh
STDMETHOD(LockAttributeBuffer)(THIS_ DWORD Flags, DWORD** ppData) PURE;
STDMETHOD(UnlockAttributeBuffer)(THIS) PURE;
STDMETHOD(Optimize)(THIS_ DWORD Flags, CONST DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
DWORD* pFaceRemap, LPD3DXBUFFER *ppVertexRemap,
LPD3DXMESH* ppOptMesh) PURE;
STDMETHOD(OptimizeInplace)(THIS_ DWORD Flags, CONST DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
DWORD* pFaceRemap, LPD3DXBUFFER *ppVertexRemap) PURE;
};
#undef INTERFACE
#define INTERFACE ID3DXPMesh
DECLARE_INTERFACE_(ID3DXPMesh, ID3DXBaseMesh)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXBaseMesh
STDMETHOD(DrawSubset)(THIS_ DWORD AttribId) PURE;
STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
DWORD FVF, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
STDMETHOD(CloneMesh)(THIS_ DWORD Options,
CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
STDMETHOD(LockVertexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
STDMETHOD(LockIndexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
STDMETHOD(GetAttributeTable)(
THIS_ D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) PURE;
STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* pPRep, DWORD* pAdjacency) PURE;
STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* pAdjacency, DWORD* pPRep) PURE;
STDMETHOD(GenerateAdjacency)(THIS_ FLOAT Epsilon, DWORD* pAdjacency) PURE;
// ID3DXPMesh
STDMETHOD(ClonePMeshFVF)(THIS_ DWORD Options,
DWORD FVF, LPDIRECT3DDEVICE8 pD3D, LPD3DXPMESH* ppCloneMesh) PURE;
STDMETHOD(ClonePMesh)(THIS_ DWORD Options,
CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3D, LPD3DXPMESH* ppCloneMesh) PURE;
STDMETHOD(SetNumFaces)(THIS_ DWORD Faces) PURE;
STDMETHOD(SetNumVertices)(THIS_ DWORD Vertices) PURE;
STDMETHOD_(DWORD, GetMaxFaces)(THIS) PURE;
STDMETHOD_(DWORD, GetMinFaces)(THIS) PURE;
STDMETHOD_(DWORD, GetMaxVertices)(THIS) PURE;
STDMETHOD_(DWORD, GetMinVertices)(THIS) PURE;
STDMETHOD(Save)(THIS_ IStream *pStream, LPD3DXMATERIAL pMaterials, DWORD NumMaterials) PURE;
STDMETHOD(Optimize)(THIS_ DWORD Flags, DWORD* pAdjacencyOut,
DWORD* pFaceRemap, LPD3DXBUFFER *ppVertexRemap,
LPD3DXMESH* ppOptMesh) PURE;
STDMETHOD(OptimizeBaseLOD)(THIS_ DWORD Flags, DWORD* pFaceRemap) PURE;
STDMETHOD(TrimByFaces)(THIS_ DWORD NewFacesMin, DWORD NewFacesMax, DWORD *rgiFaceRemap, DWORD *rgiVertRemap) PURE;
STDMETHOD(TrimByVertices)(THIS_ DWORD NewVerticesMin, DWORD NewVerticesMax, DWORD *rgiFaceRemap, DWORD *rgiVertRemap) PURE;
STDMETHOD(GetAdjacency)(THIS_ DWORD* pAdjacency) PURE;
};
#undef INTERFACE
#define INTERFACE ID3DXSPMesh
DECLARE_INTERFACE_(ID3DXSPMesh, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXSPMesh
STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
DWORD FVF, LPDIRECT3DDEVICE8 pD3D, DWORD *pAdjacencyOut, DWORD *pVertexRemapOut, LPD3DXMESH* ppCloneMesh) PURE;
STDMETHOD(CloneMesh)(THIS_ DWORD Options,
CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, DWORD *pAdjacencyOut, DWORD *pVertexRemapOut, LPD3DXMESH* ppCloneMesh) PURE;
STDMETHOD(ClonePMeshFVF)(THIS_ DWORD Options,
DWORD FVF, LPDIRECT3DDEVICE8 pD3D, DWORD *pVertexRemapOut, LPD3DXPMESH* ppCloneMesh) PURE;
STDMETHOD(ClonePMesh)(THIS_ DWORD Options,
CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3D, DWORD *pVertexRemapOut, LPD3DXPMESH* ppCloneMesh) PURE;
STDMETHOD(ReduceFaces)(THIS_ DWORD Faces) PURE;
STDMETHOD(ReduceVertices)(THIS_ DWORD Vertices) PURE;
STDMETHOD_(DWORD, GetMaxFaces)(THIS) PURE;
STDMETHOD_(DWORD, GetMaxVertices)(THIS) PURE;
STDMETHOD(GetVertexAttributeWeights)(THIS_ LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights) PURE;
STDMETHOD(GetVertexWeights)(THIS_ FLOAT *pVertexWeights) PURE;
};
#define UNUSED16 (0xffff)
#define UNUSED32 (0xffffffff)
// ID3DXMesh::Optimize options - upper byte only, lower 3 bytes used from _D3DXMESH option flags
enum _D3DXMESHOPT {
D3DXMESHOPT_COMPACT = 0x01000000,
D3DXMESHOPT_ATTRSORT = 0x02000000,
D3DXMESHOPT_VERTEXCACHE = 0x04000000,
D3DXMESHOPT_STRIPREORDER = 0x08000000,
D3DXMESHOPT_IGNOREVERTS = 0x10000000, // optimize faces only, don't touch vertices
D3DXMESHOPT_SHAREVB = 0x1000, // same as D3DXMESH_VB_SHARE
};
// Subset of the mesh that has the same attribute and bone combination.
// This subset can be rendered in a single draw call
typedef struct _D3DXBONECOMBINATION
{
DWORD AttribId;
DWORD FaceStart;
DWORD FaceCount;
DWORD VertexStart;
DWORD VertexCount;
DWORD* BoneId;
} D3DXBONECOMBINATION, *LPD3DXBONECOMBINATION;
#undef INTERFACE
#define INTERFACE ID3DXSkinMesh
DECLARE_INTERFACE_(ID3DXSkinMesh, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXMesh
STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, BYTE** ppData) PURE;
STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
STDMETHOD(LockIndexBuffer)(THIS_ DWORD flags, BYTE** ppData) PURE;
STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
STDMETHOD(LockAttributeBuffer)(THIS_ DWORD flags, DWORD** ppData) PURE;
STDMETHOD(UnlockAttributeBuffer)(THIS) PURE;
// ID3DXSkinMesh
STDMETHOD_(DWORD, GetNumBones)(THIS) PURE;
STDMETHOD(GetOriginalMesh)(THIS_ LPD3DXMESH* ppMesh) PURE;
STDMETHOD(SetBoneInfluence)(THIS_ DWORD bone, DWORD numInfluences, CONST DWORD* vertices, CONST FLOAT* weights) PURE;
STDMETHOD_(DWORD, GetNumBoneInfluences)(THIS_ DWORD bone) PURE;
STDMETHOD(GetBoneInfluence)(THIS_ DWORD bone, DWORD* vertices, FLOAT* weights) PURE;
STDMETHOD(GetMaxVertexInfluences)(THIS_ DWORD* maxVertexInfluences) PURE;
STDMETHOD(GetMaxFaceInfluences)(THIS_ DWORD* maxFaceInfluences) PURE;
STDMETHOD(ConvertToBlendedMesh)(THIS_ DWORD Options,
CONST LPDWORD pAdjacencyIn,
LPDWORD pAdjacencyOut,
DWORD* pNumBoneCombinations,
LPD3DXBUFFER* ppBoneCombinationTable,
DWORD* pFaceRemap,
LPD3DXBUFFER *ppVertexRemap,
LPD3DXMESH* ppMesh) PURE;
STDMETHOD(ConvertToIndexedBlendedMesh)(THIS_ DWORD Options,
CONST LPDWORD pAdjacencyIn,
DWORD paletteSize,
LPDWORD pAdjacencyOut,
DWORD* pNumBoneCombinations,
LPD3DXBUFFER* ppBoneCombinationTable,
DWORD* pFaceRemap,
LPD3DXBUFFER *ppVertexRemap,
LPD3DXMESH* ppMesh) PURE;
STDMETHOD(GenerateSkinnedMesh)(THIS_ DWORD Options,
FLOAT minWeight,
CONST LPDWORD pAdjacencyIn,
LPDWORD pAdjacencyOut,
DWORD* pFaceRemap,
LPD3DXBUFFER *ppVertexRemap,
LPD3DXMESH* ppMesh) PURE;
STDMETHOD(UpdateSkinnedMesh)(THIS_ CONST D3DXMATRIX* pBoneTransforms, CONST D3DXMATRIX* pBoneInvTransforms, LPD3DXMESH pMesh) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateMesh(
DWORD NumFaces,
DWORD NumVertices,
DWORD Options,
CONST DWORD *pDeclaration,
LPDIRECT3DDEVICE8 pD3D,
LPD3DXMESH* ppMesh);
HRESULT WINAPI
D3DXCreateMeshFVF(
DWORD NumFaces,
DWORD NumVertices,
DWORD Options,
DWORD FVF,
LPDIRECT3DDEVICE8 pD3D,
LPD3DXMESH* ppMesh);
HRESULT WINAPI
D3DXCreateSPMesh(
LPD3DXMESH pMesh,
CONST DWORD* pAdjacency,
CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
CONST FLOAT *pVertexWeights,
LPD3DXSPMESH* ppSMesh);
// clean a mesh up for simplification, try to make manifold
HRESULT WINAPI
D3DXCleanMesh(
LPD3DXMESH pMeshIn,
CONST DWORD* pAdjacencyIn,
LPD3DXMESH* ppMeshOut,
DWORD* pAdjacencyOut,
LPD3DXBUFFER* ppErrorsAndWarnings);
HRESULT WINAPI
D3DXValidMesh(
LPD3DXMESH pMeshIn,
CONST DWORD* pAdjacency,
LPD3DXBUFFER* ppErrorsAndWarnings);
HRESULT WINAPI
D3DXGeneratePMesh(
LPD3DXMESH pMesh,
CONST DWORD* pAdjacency,
CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
CONST FLOAT *pVertexWeights,
DWORD MinValue,
DWORD Options,
LPD3DXPMESH* ppPMesh);
HRESULT WINAPI
D3DXSimplifyMesh(
LPD3DXMESH pMesh,
CONST DWORD* pAdjacency,
CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
CONST FLOAT *pVertexWeights,
DWORD MinValue,
DWORD Options,
LPD3DXMESH* ppMesh);
HRESULT WINAPI
D3DXComputeBoundingSphere(
PVOID pPointsFVF,
DWORD NumVertices,
DWORD FVF,
D3DXVECTOR3 *pCenter,
FLOAT *pRadius);
HRESULT WINAPI
D3DXComputeBoundingBox(
PVOID pPointsFVF,
DWORD NumVertices,
DWORD FVF,
D3DXVECTOR3 *pMin,
D3DXVECTOR3 *pMax);
HRESULT WINAPI
D3DXComputeNormals(
LPD3DXBASEMESH pMesh,
CONST DWORD *pAdjacency);
HRESULT WINAPI
D3DXCreateBuffer(
DWORD NumBytes,
LPD3DXBUFFER *ppBuffer);
HRESULT WINAPI
D3DXLoadMeshFromX(
LPSTR pFilename,
DWORD Options,
LPDIRECT3DDEVICE8 pD3D,
LPD3DXBUFFER *ppAdjacency,
LPD3DXBUFFER *ppMaterials,
DWORD *pNumMaterials,
LPD3DXMESH *ppMesh);
HRESULT WINAPI
D3DXLoadMeshFromXInMemory(
PBYTE Memory,
DWORD SizeOfMemory,
DWORD Options,
LPDIRECT3DDEVICE8 pD3D,
LPD3DXBUFFER *ppAdjacency,
LPD3DXBUFFER *ppMaterials,
DWORD *pNumMaterials,
LPD3DXMESH *ppMesh);
HRESULT WINAPI
D3DXLoadMeshFromXResource(
HMODULE Module,
LPCTSTR Name,
LPCTSTR Type,
DWORD Options,
LPDIRECT3DDEVICE8 pD3D,
LPD3DXBUFFER *ppAdjacency,
LPD3DXBUFFER *ppMaterials,
DWORD *pNumMaterials,
LPD3DXMESH *ppMesh);
HRESULT WINAPI
D3DXSaveMeshToX(
LPSTR pFilename,
LPD3DXMESH pMesh,
CONST DWORD* pAdjacency,
CONST LPD3DXMATERIAL pMaterials,
DWORD NumMaterials,
DWORD Format
);
HRESULT WINAPI
D3DXCreatePMeshFromStream(
IStream *pStream,
DWORD Options,
LPDIRECT3DDEVICE8 pD3DDevice,
LPD3DXBUFFER *ppMaterials,
DWORD* pNumMaterials,
LPD3DXPMESH *ppPMesh);
HRESULT WINAPI
D3DXCreateSkinMesh(
DWORD NumFaces,
DWORD NumVertices,
DWORD NumBones,
DWORD Options,
CONST DWORD *pDeclaration,
LPDIRECT3DDEVICE8 pD3D,
LPD3DXSKINMESH* ppSkinMesh);
HRESULT WINAPI
D3DXCreateSkinMeshFVF(
DWORD NumFaces,
DWORD NumVertices,
DWORD NumBones,
DWORD Options,
DWORD FVF,
LPDIRECT3DDEVICE8 pD3D,
LPD3DXSKINMESH* ppSkinMesh);
HRESULT WINAPI
D3DXCreateSkinMeshFromMesh(
LPD3DXMESH pMesh,
DWORD numBones,
LPD3DXSKINMESH* ppSkinMesh);
HRESULT WINAPI
D3DXLoadMeshFromXof(
LPDIRECTXFILEDATA pXofObjMesh,
DWORD Options,
LPDIRECT3DDEVICE8 pD3DDevice,
LPD3DXBUFFER *ppAdjacency,
LPD3DXBUFFER *ppMaterials,
DWORD *pNumMaterials,
LPD3DXMESH *ppMesh);
HRESULT WINAPI
D3DXLoadSkinMeshFromXof(
LPDIRECTXFILEDATA pxofobjMesh,
DWORD Options,
LPDIRECT3DDEVICE8 pD3D,
LPD3DXBUFFER* ppAdjacency,
LPD3DXBUFFER* ppMaterials,
DWORD *pMatOut,
LPD3DXBUFFER* ppBoneNames,
LPD3DXBUFFER* ppBoneTransforms,
LPD3DXSKINMESH* ppMesh);
HRESULT WINAPI
D3DXTessellateNPatches(
LPD3DXMESH pMeshIn,
CONST DWORD* pAdjacencyIn,
FLOAT NumSegs,
BOOL QuadraticInterpNormals, // if false use linear intrep for normals, if true use quadratic
LPD3DXMESH *ppMeshOut,
LPD3DXBUFFER *ppAdjacencyOut);
UINT WINAPI
D3DXGetFVFVertexSize(DWORD FVF);
HRESULT WINAPI
D3DXDeclaratorFromFVF(
DWORD FVF,
DWORD Declaration[MAX_FVF_DECL_SIZE]);
HRESULT WINAPI
D3DXFVFFromDeclarator(
CONST DWORD *pDeclarator,
DWORD *pFVF);
HRESULT WINAPI
D3DXWeldVertices(
CONST LPD3DXMESH pMesh,
LPD3DXWELDEPSILONS pEpsilons,
CONST DWORD *pAdjacencyIn,
DWORD *pAdjacencyOut,
DWORD* pFaceRemap,
LPD3DXBUFFER *ppVertexRemap);
typedef struct _D3DXINTERSECTINFO
{
DWORD FaceIndex; // index of face intersected
FLOAT U; // Barycentric Hit Coordinates
FLOAT V; // Barycentric Hit Coordinates
FLOAT Dist; // Ray-Intersection Parameter Distance
} D3DXINTERSECTINFO, *LPD3DXINTERSECTINFO;
HRESULT WINAPI
D3DXIntersect(
LPD3DXBASEMESH pMesh,
CONST D3DXVECTOR3 *pRayPos,
CONST D3DXVECTOR3 *pRayDir,
BOOL *pHit, // True if any faces were intersected
DWORD *pFaceIndex, // index of closest face intersected
FLOAT *pU, // Barycentric Hit Coordinates
FLOAT *pV, // Barycentric Hit Coordinates
FLOAT *pDist, // Ray-Intersection Parameter Distance
LPD3DXBUFFER *ppAllHits, // Array of D3DXINTERSECTINFOs for all hits (not just closest)
DWORD *pCountOfHits); // Number of entries in AllHits array
HRESULT WINAPI
D3DXIntersectSubset(
LPD3DXBASEMESH pMesh,
DWORD AttribId,
CONST D3DXVECTOR3 *pRayPos,
CONST D3DXVECTOR3 *pRayDir,
BOOL *pHit, // True if any faces were intersected
DWORD *pFaceIndex, // index of closest face intersected
FLOAT *pU, // Barycentric Hit Coordinates
FLOAT *pV, // Barycentric Hit Coordinates
FLOAT *pDist, // Ray-Intersection Parameter Distance
LPD3DXBUFFER *ppAllHits, // Array of D3DXINTERSECTINFOs for all hits (not just closest)
DWORD *pCountOfHits); // Number of entries in AllHits array
HRESULT WINAPI D3DXSplitMesh
(
CONST LPD3DXMESH pMeshIn,
CONST DWORD *pAdjacencyIn,
CONST DWORD MaxSize,
CONST DWORD Options,
DWORD *pMeshesOut,
LPD3DXBUFFER *ppMeshArrayOut,
LPD3DXBUFFER *ppAdjacencyArrayOut,
LPD3DXBUFFER *ppFaceRemapArrayOut,
LPD3DXBUFFER *ppVertRemapArrayOut
);
BOOL D3DXIntersectTri
(
CONST D3DXVECTOR3 *p0, // Triangle vertex 0 position
CONST D3DXVECTOR3 *p1, // Triangle vertex 1 position
CONST D3DXVECTOR3 *p2, // Triangle vertex 2 position
CONST D3DXVECTOR3 *pRayPos, // Ray origin
CONST D3DXVECTOR3 *pRayDir, // Ray direction
FLOAT *pU, // Barycentric Hit Coordinates
FLOAT *pV, // Barycentric Hit Coordinates
FLOAT *pDist); // Ray-Intersection Parameter Distance
BOOL WINAPI
D3DXSphereBoundProbe(
CONST D3DXVECTOR3 *pCenter,
FLOAT Radius,
CONST D3DXVECTOR3 *pRayPosition,
CONST D3DXVECTOR3 *pRayDirection);
BOOL WINAPI
D3DXBoxBoundProbe(
CONST D3DXVECTOR3 *pMin,
CONST D3DXVECTOR3 *pMax,
CONST D3DXVECTOR3 *pRayPosition,
CONST D3DXVECTOR3 *pRayDirection);
enum _D3DXERR {
D3DXERR_CANNOTMODIFYINDEXBUFFER = MAKE_DDHRESULT(2900),
D3DXERR_INVALIDMESH = MAKE_DDHRESULT(2901),
D3DXERR_CANNOTATTRSORT = MAKE_DDHRESULT(2902),
D3DXERR_SKINNINGNOTSUPPORTED = MAKE_DDHRESULT(2903),
D3DXERR_TOOMANYINFLUENCES = MAKE_DDHRESULT(2904),
D3DXERR_INVALIDDATA = MAKE_DDHRESULT(2905),
D3DXERR_LOADEDMESHASNODATA = MAKE_DDHRESULT(2906),
};
#define D3DX_COMP_TANGENT_NONE 0xFFFFFFFF
HRESULT WINAPI D3DXComputeTangent(LPD3DXMESH InMesh,
DWORD TexStage,
LPD3DXMESH OutMesh,
DWORD TexStageUVec,
DWORD TexStageVVec,
DWORD Wrap,
DWORD *Adjacency);
HRESULT WINAPI
D3DXConvertMeshSubsetToSingleStrip
(
LPD3DXBASEMESH MeshIn,
DWORD AttribId,
DWORD IBOptions,
LPDIRECT3DINDEXBUFFER8 *ppIndexBuffer,
DWORD *pNumIndices
);
HRESULT WINAPI
D3DXConvertMeshSubsetToStrips
(
LPD3DXBASEMESH MeshIn,
DWORD AttribId,
DWORD IBOptions,
LPDIRECT3DINDEXBUFFER8 *ppIndexBuffer,
DWORD *pNumIndices,
LPD3DXBUFFER *ppStripLengths,
DWORD *pNumStrips
);
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DX8MESH_H__

220
third_party/dx9_sdk/include/d3dx8shape.h vendored Normal file
View File

@ -0,0 +1,220 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx8shapes.h
// Content: D3DX simple shapes
//
///////////////////////////////////////////////////////////////////////////
#include "d3dx8.h"
#ifndef __D3DX8SHAPES_H__
#define __D3DX8SHAPES_H__
///////////////////////////////////////////////////////////////////////////
// Functions:
///////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//-------------------------------------------------------------------------
// D3DXCreatePolygon:
// ------------------
// Creates a mesh containing an n-sided polygon. The polygon is centered
// at the origin.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Length Length of each side.
// Sides Number of sides the polygon has. (Must be >= 3)
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreatePolygon(
LPDIRECT3DDEVICE8 pDevice,
FLOAT Length,
UINT Sides,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateBox:
// --------------
// Creates a mesh containing an axis-aligned box. The box is centered at
// the origin.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Width Width of box (along X-axis)
// Height Height of box (along Y-axis)
// Depth Depth of box (along Z-axis)
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateBox(
LPDIRECT3DDEVICE8 pDevice,
FLOAT Width,
FLOAT Height,
FLOAT Depth,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateCylinder:
// -------------------
// Creates a mesh containing a cylinder. The generated cylinder is
// centered at the origin, and its axis is aligned with the Z-axis.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Radius1 Radius at -Z end (should be >= 0.0f)
// Radius2 Radius at +Z end (should be >= 0.0f)
// Length Length of cylinder (along Z-axis)
// Slices Number of slices about the main axis
// Stacks Number of stacks along the main axis
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateCylinder(
LPDIRECT3DDEVICE8 pDevice,
FLOAT Radius1,
FLOAT Radius2,
FLOAT Length,
UINT Slices,
UINT Stacks,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateSphere:
// -----------------
// Creates a mesh containing a sphere. The sphere is centered at the
// origin.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Radius Radius of the sphere (should be >= 0.0f)
// Slices Number of slices about the main axis
// Stacks Number of stacks along the main axis
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateSphere(
LPDIRECT3DDEVICE8 pDevice,
FLOAT Radius,
UINT Slices,
UINT Stacks,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateTorus:
// ----------------
// Creates a mesh containing a torus. The generated torus is centered at
// the origin, and its axis is aligned with the Z-axis.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// InnerRadius Inner radius of the torus (should be >= 0.0f)
// OuterRadius Outer radius of the torue (should be >= 0.0f)
// Sides Number of sides in a cross-section (must be >= 3)
// Rings Number of rings making up the torus (must be >= 3)
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTorus(
LPDIRECT3DDEVICE8 pDevice,
FLOAT InnerRadius,
FLOAT OuterRadius,
UINT Sides,
UINT Rings,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateTeapot:
// -----------------
// Creates a mesh containing a teapot.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTeapot(
LPDIRECT3DDEVICE8 pDevice,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateText:
// ---------------
// Creates a mesh containing the specified text using the font associated
// with the device context.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// hDC Device context, with desired font selected
// pText Text to generate
// Deviation Maximum chordal deviation from true font outlines
// Extrusion Amount to extrude text in -Z direction
// ppMesh The mesh object which will be created
// pGlyphMetrics Address of buffer to receive glyph metric data (or NULL)
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTextA(
LPDIRECT3DDEVICE8 pDevice,
HDC hDC,
LPCSTR pText,
FLOAT Deviation,
FLOAT Extrusion,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency,
LPGLYPHMETRICSFLOAT pGlyphMetrics);
HRESULT WINAPI
D3DXCreateTextW(
LPDIRECT3DDEVICE8 pDevice,
HDC hDC,
LPCWSTR pText,
FLOAT Deviation,
FLOAT Extrusion,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency,
LPGLYPHMETRICSFLOAT pGlyphMetrics);
#ifdef UNICODE
#define D3DXCreateText D3DXCreateTextW
#else
#define D3DXCreateText D3DXCreateTextA
#endif
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DX8SHAPES_H__

1592
third_party/dx9_sdk/include/d3dx8tex.h vendored Normal file

File diff suppressed because it is too large Load Diff

71
third_party/dx9_sdk/include/d3dx9.h vendored Normal file
View File

@ -0,0 +1,71 @@
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx9.h
// Content: D3DX utility library
//
//////////////////////////////////////////////////////////////////////////////
#ifdef __D3DX_INTERNAL__
#error Incorrect D3DX header used
#endif
#ifndef __D3DX9_H__
#define __D3DX9_H__
// Defines
#include <limits.h>
#define D3DX_DEFAULT ((UINT) -1)
#define D3DX_DEFAULT_NONPOW2 ((UINT) -2)
#define D3DX_DEFAULT_FLOAT FLT_MAX
#ifndef D3DXINLINE
#ifdef _MSC_VER
#if (_MSC_VER >= 1200)
#define D3DXINLINE __forceinline
#else
#define D3DXINLINE __inline
#endif
#else
#ifdef __cplusplus
#define D3DXINLINE inline
#else
#define D3DXINLINE
#endif
#endif
#endif
// Includes
#include "d3d9.h"
#include "d3dx9math.h"
#include "d3dx9core.h"
#include "d3dx9mesh.h"
#include "d3dx9tex.h"
#include "d3dx9shader.h"
#include "d3dx9effect.h"
#include "d3dx9shape.h"
#include "d3dx9anim.h"
// Errors
#define _FACDD 0x876
#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
enum _D3DXERR {
D3DXERR_CANNOTMODIFYINDEXBUFFER = MAKE_DDHRESULT(2900),
D3DXERR_INVALIDMESH = MAKE_DDHRESULT(2901),
D3DXERR_CANNOTATTRSORT = MAKE_DDHRESULT(2902),
D3DXERR_SKINNINGNOTSUPPORTED = MAKE_DDHRESULT(2903),
D3DXERR_TOOMANYINFLUENCES = MAKE_DDHRESULT(2904),
D3DXERR_INVALIDDATA = MAKE_DDHRESULT(2905),
D3DXERR_LOADEDMESHASNODATA = MAKE_DDHRESULT(2906),
D3DXERR_DUPLICATENAMEDFRAGMENT = MAKE_DDHRESULT(2907),
};
#endif //__D3DX9_H__

801
third_party/dx9_sdk/include/d3dx9anim.h vendored Normal file
View File

@ -0,0 +1,801 @@
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx9anim.h
// Content: D3DX mesh types and functions
//
//////////////////////////////////////////////////////////////////////////////
#ifndef __D3DX9ANIM_H__
#define __D3DX9ANIM_H__
// {ADE2C06D-3747-4b9f-A514-3440B8284980}
DEFINE_GUID(IID_ID3DXInterpolator,
0xade2c06d, 0x3747, 0x4b9f, 0xa5, 0x14, 0x34, 0x40, 0xb8, 0x28, 0x49, 0x80);
// {6CAA71F8-0972-4cdb-A55B-43B968997515}
DEFINE_GUID(IID_ID3DXKeyFrameInterpolator,
0x6caa71f8, 0x972, 0x4cdb, 0xa5, 0x5b, 0x43, 0xb9, 0x68, 0x99, 0x75, 0x15);
// {54B569AC-0AEF-473e-9704-3FEF317F64AB}
DEFINE_GUID(IID_ID3DXAnimationSet,
0x54b569ac, 0xaef, 0x473e, 0x97, 0x4, 0x3f, 0xef, 0x31, 0x7f, 0x64, 0xab);
// {3A714D34-FF61-421e-909F-639F38356708}
DEFINE_GUID(IID_ID3DXAnimationController,
0x3a714d34, 0xff61, 0x421e, 0x90, 0x9f, 0x63, 0x9f, 0x38, 0x35, 0x67, 0x8);
typedef struct ID3DXInterpolator *LPD3DXINTERPOLATOR;
typedef struct ID3DXKeyFrameInterpolator *LPD3DXKEYFRAMEINTERPOLATOR;
typedef struct ID3DXAnimationSet *LPD3DXANIMATIONSET;
typedef struct ID3DXAnimationController *LPD3DXANIMATIONCONTROLLER;
typedef struct ID3DXAllocateHierarchy *LPD3DXALLOCATEHIERARCHY;
typedef struct ID3DXLoadUserData *LPD3DXLOADUSERDATA;
typedef struct ID3DXSaveUserData *LPD3DXSAVEUSERDATA;
//----------------------------------------------------------------------------
// This enum defines the type of mesh data present in a MeshData structure
//----------------------------------------------------------------------------
typedef enum _D3DXMESHDATATYPE {
D3DXMESHTYPE_MESH = 0x001, // normal ID3DXMesh data
D3DXMESHTYPE_PMESH = 0x002, // Progressive Mesh - ID3DXPMesh
D3DXMESHTYPE_PATCHMESH = 0x003, // Patch MEsh - ID3DXPatchMesh
D3DXMESHTYPE_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
} D3DXMESHDATATYPE;
//----------------------------------------------------------------------------
// This struct encapsulates a the mesh data that can be present in a mesh
// container. The supported mesh types are pMesh, pPMesh, pPatchMesh
// The valid way to access this is determined by the MeshType enum
//----------------------------------------------------------------------------
typedef struct _D3DXMESHDATA
{
D3DXMESHDATATYPE Type;
// current mesh data interface
union
{
LPD3DXMESH pMesh;
LPD3DXPMESH pPMesh;
LPD3DXPATCHMESH pPatchMesh;
};
} D3DXMESHDATA, *LPD3DXMESHDATA;
//----------------------------------------------------------------------------
// This struct encapsulates a mesh object in a transformation frame
// hierarchy. The app can derive from this structure to add other app specific
// data to this
//----------------------------------------------------------------------------
typedef struct _D3DXMESHCONTAINER
{
LPSTR Name;
D3DXMESHDATA MeshData;
LPD3DXMATERIAL pMaterials;
LPD3DXEFFECTINSTANCE pEffects;
DWORD NumMaterials;
DWORD *pAdjacency;
LPD3DXSKININFO pSkinInfo;
struct _D3DXMESHCONTAINER *pNextMeshContainer;
} D3DXMESHCONTAINER, *LPD3DXMESHCONTAINER;
//----------------------------------------------------------------------------
// This struct is the encapsulates a transform frame in a transformation frame
// hierarchy. The app can derive from this structure to add other app specific
// data to this
//----------------------------------------------------------------------------
typedef struct _D3DXFRAME
{
LPSTR Name;
D3DXMATRIX TransformationMatrix;
LPD3DXMESHCONTAINER pMeshContainer;
struct _D3DXFRAME *pFrameSibling;
struct _D3DXFRAME *pFrameFirstChild;
} D3DXFRAME, *LPD3DXFRAME;
#undef INTERFACE
#define INTERFACE ID3DXAllocateHierarchy
//----------------------------------------------------------------------------
// This interface is implemented by the application to allocate/free frame and
// mesh container objects. Methods on this are called during loading and
// destroying frame hierarchies
//----------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////
// ID3DXAllocateHierarchy ////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
DECLARE_INTERFACE(ID3DXAllocateHierarchy)
{
// ID3DXAllocateHierarchy
//------------------------------------------------------------------------
// CreateFrame:
// ------------
// Requests allocation of a frame object.
//
// Parameters:
// Name
// Name of the frame to be created
// ppNewFrame
// Returns returns the created frame object
//
//------------------------------------------------------------------------
STDMETHOD(CreateFrame)(THIS_ LPCSTR Name,
LPD3DXFRAME *ppNewFrame) PURE;
//------------------------------------------------------------------------
// CreateMeshContainer:
// --------------------
// Requests allocation of a mesh container object.
//
// Parameters:
// Name
// Name of the mesh
// pMesh
// Pointer to the mesh object if basic polygon data found
// pPMesh
// Pointer to the progressive mesh object if progressive mesh data found
// pPatchMesh
// Pointer to the patch mesh object if patch data found
// pMaterials
// Array of materials used in the mesh
// pEffectInstances
// Array of effect instances used in the mesh
// NumMaterials
// Num elements in the pMaterials array
// pAdjacency
// Adjacency array for the mesh
// pSkinInfo
// Pointer to the skininfo object if the mesh is skinned
// pBoneNames
// Array of names, one for each bone in the skinned mesh.
// The numberof bones can be found from the pSkinMesh object
// pBoneOffsetMatrices
// Array of matrices, one for each bone in the skinned mesh.
//
//------------------------------------------------------------------------
STDMETHOD(CreateMeshContainer)(THIS_ LPCSTR Name, LPD3DXMESHDATA pMeshData,
LPD3DXMATERIAL pMaterials, LPD3DXEFFECTINSTANCE pEffectInstances, DWORD NumMaterials,
DWORD *pAdjacency, LPD3DXSKININFO pSkinInfo,
LPD3DXMESHCONTAINER *ppNewMeshContainer) PURE;
//------------------------------------------------------------------------
// DestroyFrame:
// -------------
// Requests de-allocation of a frame object.
//
// Parameters:
// pFrameToFree
// Pointer to the frame to be de-allocated
//
//------------------------------------------------------------------------
STDMETHOD(DestroyFrame)(THIS_ LPD3DXFRAME pFrameToFree) PURE;
//------------------------------------------------------------------------
// DestroyMeshContainer:
// ---------------------
// Requests de-allocation of a mesh container object.
//
// Parameters:
// pMeshContainerToFree
// Pointer to the mesh container object to be de-allocated
//
//------------------------------------------------------------------------
STDMETHOD(DestroyMeshContainer)(THIS_ LPD3DXMESHCONTAINER pMeshContainerToFree) PURE;
};
//----------------------------------------------------------------------------
// This interface is implemented by the application to load user data in a .X file
// When user data is found, these callbacks will be used to allow the application
// to load the data
//----------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////
// ID3DXLoadUserData ////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
DECLARE_INTERFACE(ID3DXLoadUserData)
{
STDMETHOD(LoadTopLevelData)(LPDIRECTXFILEDATA pXofChildData) PURE;
STDMETHOD(LoadFrameChildData)(LPD3DXFRAME pFrame,
LPDIRECTXFILEDATA pXofChildData) PURE;
STDMETHOD(LoadMeshChildData)(LPD3DXMESHCONTAINER pMeshContainer,
LPDIRECTXFILEDATA pXofChildData) PURE;
};
//----------------------------------------------------------------------------
// This interface is implemented by the application to save user data in a .X file
// The callbacks are called for all data saved. The user can then add any
// child data objects to the object provided to the callback
//----------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////
// ID3DXSaveUserData /////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
DECLARE_INTERFACE(ID3DXSaveUserData)
{
STDMETHOD(AddFrameChildData)(LPD3DXFRAME pFrame,
LPDIRECTXFILESAVEOBJECT pXofSave,
LPDIRECTXFILEDATA pXofFrameData) PURE;
STDMETHOD(AddMeshChildData)(LPD3DXMESHCONTAINER pMeshContainer,
LPDIRECTXFILESAVEOBJECT pXofSave,
LPDIRECTXFILEDATA pXofMeshData) PURE;
// NOTE: this is called once per Save. All top level objects should be added using the
// provided interface. One call adds objects before the frame hierarchy, the other after
STDMETHOD(AddTopLevelDataObjectsPre)(LPDIRECTXFILESAVEOBJECT pXofSave) PURE;
STDMETHOD(AddTopLevelDataObjectsPost)(LPDIRECTXFILESAVEOBJECT pXofSave) PURE;
// callbacks for the user to register and then save templates to the XFile
STDMETHOD(RegisterTemplates)(LPDIRECTXFILE pXFileApi) PURE;
STDMETHOD(SaveTemplates)(LPDIRECTXFILESAVEOBJECT pXofSave) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//----------------------------------------------------------------------------
// D3DXLoadMeshHierarchyFromX:
// ---------------------------
// Loads the first frame hierarchy in a .X file.
//
// Parameters:
// Filename
// Name of the .X file
// MeshOptions
// Mesh creation options for meshes in the file (see d3dx9mesh.h)
// pD3DDevice
// D3D9 device on which meshes in the file are created in
// pAlloc
// Allocation interface used to allocate nodes of the frame hierarchy
// pUserDataLoader
// Application provided interface to allow loading of user data
// ppFrameHierarchy
// Returns root node pointer of the loaded frame hierarchy
// ppAnimController
// Returns pointer to an animation controller corresponding to animation
// in the .X file. This is created with default max tracks and events
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXLoadMeshHierarchyFromXA(
LPCSTR Filename,
DWORD MeshOptions,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXALLOCATEHIERARCHY pAlloc,
LPD3DXLOADUSERDATA pUserDataLoader,
LPD3DXFRAME *ppFrameHierarchy,
LPD3DXANIMATIONCONTROLLER *ppAnimController
);
HRESULT WINAPI
D3DXLoadMeshHierarchyFromXW(
LPCWSTR Filename,
DWORD MeshOptions,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXALLOCATEHIERARCHY pAlloc,
LPD3DXLOADUSERDATA pUserDataLoader,
LPD3DXFRAME *ppFrameHierarchy,
LPD3DXANIMATIONCONTROLLER *ppAnimController
);
#ifdef UNICODE
#define D3DXLoadMeshHierarchyFromX D3DXLoadMeshHierarchyFromXW
#else
#define D3DXLoadMeshHierarchyFromX D3DXLoadMeshHierarchyFromXA
#endif
HRESULT WINAPI
D3DXLoadMeshHierarchyFromXInMemory(
LPCVOID Memory,
DWORD SizeOfMemory,
DWORD MeshOptions,
LPDIRECT3DDEVICE9 pD3DDevice,
LPD3DXALLOCATEHIERARCHY pAlloc,
LPD3DXLOADUSERDATA pUserDataLoader,
LPD3DXFRAME *ppFrameHierarchy,
LPD3DXANIMATIONCONTROLLER *ppAnimController
);
//----------------------------------------------------------------------------
// D3DXSaveMeshHierarchyToFile:
// ---------------------------
// Creates a .X file and saves the mesh hierarchy and corresponding animations
// in it
//
// Parameters:
// Filename
// Name of the .X file
// XFormat
// Format of the .X file (text or binary, compressed or not, etc)
// pFrameRoot
// Root node of the hierarchy to be saved
// pAnimController
// The animation mixer whose animation sets are to be stored
// pUserDataSaver
// Application provided interface to allow adding of user data to
// data objects saved to .X file
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXSaveMeshHierarchyToFileA(
LPCSTR Filename,
DWORD XFormat,
LPD3DXFRAME pFrameRoot,
LPD3DXANIMATIONCONTROLLER pAnimMixer,
LPD3DXSAVEUSERDATA pUserDataSaver
);
HRESULT WINAPI
D3DXSaveMeshHierarchyToFileW(
LPCWSTR Filename,
DWORD XFormat,
LPD3DXFRAME pFrameRoot,
LPD3DXANIMATIONCONTROLLER pAnimMixer,
LPD3DXSAVEUSERDATA pUserDataSaver
);
#ifdef UNICODE
#define D3DXSaveMeshHierarchyToFile D3DXSaveMeshHierarchyToFileW
#else
#define D3DXSaveMeshHierarchyToFile D3DXSaveMeshHierarchyToFileA
#endif
//----------------------------------------------------------------------------
// D3DXFrameDestroy:
// -----------------
// Destroys the subtree of frames under the root, including the root
//
// Parameters:
// pFrameRoot
// Pointer to the root node
// pAlloc
// Allocation interface used to de-allocate nodes of the frame hierarchy
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXFrameDestroy(
LPD3DXFRAME pFrameRoot,
LPD3DXALLOCATEHIERARCHY pAlloc
);
//----------------------------------------------------------------------------
// D3DXFrameAppendChild:
// ---------------------
// Add a child frame to a frame
//
// Parameters:
// pFrameParent
// Pointer to the parent node
// pFrameChild
// Pointer to the child node
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXFrameAppendChild(
LPD3DXFRAME pFrameParent,
LPD3DXFRAME pFrameChild
);
//----------------------------------------------------------------------------
// D3DXFrameFind:
// --------------
// Finds a frame with the given name. Returns NULL if no frame found.
//
// Parameters:
// pFrameRoot
// Pointer to the root node
// Name
// Name of frame to find
//
//----------------------------------------------------------------------------
LPD3DXFRAME WINAPI
D3DXFrameFind(
LPD3DXFRAME pFrameRoot,
LPCSTR Name
);
//----------------------------------------------------------------------------
// D3DXFrameRegisterNamedMatrices:
// --------------------------
// Finds all frames that have non-null names and registers each of those frame
// matrices to the given animation mixer
//
// Parameters:
// pFrameRoot
// Pointer to the root node
// pAnimMixer
// Pointer to the animation mixer where the matrices are registered
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXFrameRegisterNamedMatrices(
LPD3DXFRAME pFrameRoot,
LPD3DXANIMATIONCONTROLLER pAnimMixer
);
//----------------------------------------------------------------------------
// D3DXFrameNumNamedMatrices:
// --------------------------
// Counts number of frames in a subtree that have non-null names
//
// Parameters:
// pFrameRoot
// Pointer to the root node of the subtree
// Return Value:
// Count of frames
//
//----------------------------------------------------------------------------
UINT WINAPI
D3DXFrameNumNamedMatrices(
LPD3DXFRAME pFrameRoot
);
//----------------------------------------------------------------------------
// D3DXFrameCalculateBoundingSphere:
// ---------------------------------
// Computes the bounding sphere of all the meshes in the frame hierarchy
//
// Parameters:
// pFrameRoot
// Pointer to the root node
// pObjectCenter
// Returns the center of the bounding sphere
// pObjectRadius
// Returns the radius of the bounding sphere
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXFrameCalculateBoundingSphere(
LPD3DXFRAME pFrameRoot,
LPD3DXVECTOR3 pObjectCenter,
FLOAT *pObjectRadius
);
#ifdef __cplusplus
}
#endif //__cplusplus
#undef INTERFACE
#define INTERFACE ID3DXInterpolator
//----------------------------------------------------------------------------
// This interface defines a SRT (scale/rotate/translate) interpolator. This
// is an abstract interface. ID3DXKeyFrameInterpolator inherits from this.
// An application can implement this for custom SRT interpolator
//----------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////
// ID3DXInterpolator /////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
DECLARE_INTERFACE_(ID3DXInterpolator, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXInterpolator
STDMETHOD_(LPCSTR, GetName)(THIS) PURE;
STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE;
//----------------------------------------------------------------------------
// GetSRT:
// -------
// Returns the scale, rotation and translation at a given time
//
// Parameters:
// Time
// Time at which the interpolator should be queried
// pScale
// Returns the scale vector
// pRotate
// Returns the rotation qaternion
// pTranslate
// Returns the translate vector
//
//----------------------------------------------------------------------------
STDMETHOD(GetSRT)(THIS_ DOUBLE Time, D3DXVECTOR3 *pScale, D3DXQUATERNION *pRotate, D3DXVECTOR3 *pTranslate) PURE;
STDMETHOD(GetLastSRT)(THIS_ D3DXVECTOR3 *pScale, D3DXQUATERNION *pRotate, D3DXVECTOR3 *pTranslate) PURE;
};
//----------------------------------------------------------------------------
// This structure describes a vector key for use in keyframe animation.
// It specifies a vector Value at a given Time. This is used for scale and
// translation keys
//----------------------------------------------------------------------------
typedef struct _D3DXKEY_VECTOR3
{
FLOAT Time;
D3DXVECTOR3 Value;
} D3DXKEY_VECTOR3, *LPD3DXKEY_VECTOR3;
//----------------------------------------------------------------------------
// This structure describes a quaternion key for use in keyframe animation.
// It specifies a quaternion Value at a given Time. This is used for rotation
// keys
//----------------------------------------------------------------------------
typedef struct _D3DXKEY_QUATERNION
{
FLOAT Time;
D3DXQUATERNION Value;
} D3DXKEY_QUATERNION, *LPD3DXKEY_QUATERNION;
#undef INTERFACE
#define INTERFACE ID3DXKeyFrameInterpolator
//----------------------------------------------------------------------------
// This interface implements an SRT (scale/rotate/translate) interpolator
// It takes a scattered set of keys and interpolates the transform for any
// given time
//----------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////
// ID3DXKeyFrameInterpolator /////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
DECLARE_INTERFACE_(ID3DXKeyFrameInterpolator, ID3DXInterpolator)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXInterpolator
STDMETHOD_(LPCSTR, GetName)(THIS) PURE;
STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE;
STDMETHOD(GetSRT)(THIS_ DOUBLE Time, D3DXVECTOR3 *pScale, D3DXQUATERNION *pRotate, D3DXVECTOR3 *pTranslate) PURE;
STDMETHOD(GetLastSRT)(THIS_ D3DXVECTOR3 *pScale, D3DXQUATERNION *pRotate, D3DXVECTOR3 *pTranslate) PURE;
// ID3DXKeyFrameInterpolator
STDMETHOD_(UINT, GetNumScaleKeys)(THIS) PURE;
STDMETHOD(GetScaleKeys)(THIS_ LPD3DXKEY_VECTOR3 pKeys) PURE;
STDMETHOD_(UINT, GetNumRotationKeys)(THIS) PURE;
STDMETHOD(GetRotationKeys)(THIS_ LPD3DXKEY_QUATERNION pKeys) PURE;
STDMETHOD_(UINT, GetNumTranslationKeys)(THIS) PURE;
STDMETHOD(GetTranslationKeys)(THIS_ LPD3DXKEY_VECTOR3 pKeys) PURE;
// the value passed to D3DXCreateKeyFrameInterpolator to scale from the times in LPD3DXKEY_VECTOR3 to global/anim time.
STDMETHOD_(DOUBLE, GetSourceTicksPerSecond)(THIS) PURE;
};
//----------------------------------------------------------------------------
// This interface implements an set of interpolators. The set consists of
// interpolators for many nodes for the same animation.
//----------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////
// ID3DXAnimationSet /////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
DECLARE_INTERFACE_(ID3DXAnimationSet, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXAnimationSet
STDMETHOD_(LPCSTR, GetName)(THIS) PURE;
STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE;
STDMETHOD_(UINT, GetNumInterpolators)(THIS) PURE;
STDMETHOD(GetInterpolatorByIndex)(THIS_ UINT Index, LPD3DXINTERPOLATOR *ppInterpolator) PURE;
STDMETHOD(GetInterpolatorByName)(THIS_ LPCSTR pName, LPD3DXINTERPOLATOR *ppInterpolator) PURE;
};
//----------------------------------------------------------------------------
// This structure describes an animation track. A track is a combination
// of an animation set (stored separately) and mixing information.
// the mixing information consists of the current position, speed, and blending
// weight for the track. The Flags field also specifies whether the track
// is low or high priority. Tracks with the same priority are blended together
// and then the two resulting values are blended using the priority blend factor.
//----------------------------------------------------------------------------
typedef struct _D3DXTRACK_DESC
{
DWORD Flags;
FLOAT Weight;
FLOAT Speed;
BOOL Enable;
DOUBLE AnimTime;
} D3DXTRACK_DESC, *LPD3DXTRACK_DESC;
//----------------------------------------------------------------------------
// This enum defines the type of transtion performed on a event that transitions from one value to another
//----------------------------------------------------------------------------
typedef enum _D3DXTRACKFLAG {
D3DXTF_LOWPRIORITY = 0x000, // This track should be blended with all low priority tracks before mixed with the high priority result
D3DXTF_HIGHPRIORITY = 0x001, // This track should be blended with all high priority tracks before mixed with the low priority result
D3DXTF_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
} D3DXTRACKFLAG;
//----------------------------------------------------------------------------
// This interface implements the main animation functionality. It connects
// animation sets with the transform frames that are being animated. Allows
// mixing multiple animations for blended animations or for transistions
// It adds also has methods to modify blending parameters over time to
// enable smooth transistions and other effects.
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
// This enum defines the type of transtion performed on a event that transitions from one value to another
//----------------------------------------------------------------------------
typedef enum _D3DXTRANSITIONTYPE {
D3DXTRANSITION_LINEAR = 0x000, // Linear transition from one value to the next
D3DXTRANSITION_EASEINEASEOUT = 0x001, // Ease-In Ease-Out spline transtion from one value to the next
D3DXTRANSITION_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
} D3DXTRANSITIONTYPE;
//////////////////////////////////////////////////////////////////////////////
// ID3DXAnimationController //////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
DECLARE_INTERFACE_(ID3DXAnimationController, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// mixing functionality
// register outputs of SetTime
STDMETHOD(RegisterMatrix)(THIS_ LPCSTR Name, D3DXMATRIX *pMatrix) PURE;
// AnimationSets
STDMETHOD_(UINT, GetNumAnimationSets)(THIS) PURE;
STDMETHOD(GetAnimationSet)(THIS_ DWORD iAnimationSet, LPD3DXANIMATIONSET *ppAnimSet) PURE;
STDMETHOD(RegisterAnimationSet)(THIS_ LPD3DXANIMATIONSET pAnimSet) PURE;
STDMETHOD(UnregisterAnimationSet)(THIS_ LPD3DXANIMATIONSET pAnimSet) PURE;
// Tracks
STDMETHOD_(UINT, GetMaxNumTracks)(THIS) PURE;
STDMETHOD(GetTrackDesc)(THIS_ DWORD Track, D3DXTRACK_DESC *pDesc) PURE;
STDMETHOD(SetTrackDesc)(THIS_ DWORD Track, D3DXTRACK_DESC *pDesc) PURE;
STDMETHOD(GetTrackAnimationSet)(THIS_ DWORD Track, LPD3DXANIMATIONSET *ppAnimSet) PURE;
STDMETHOD(SetTrackAnimationSet)(THIS_ DWORD Track, LPD3DXANIMATIONSET pAnimSet) PURE;
// Individual track field access
STDMETHOD(SetTrackSpeed)(THIS_ DWORD Track, FLOAT Speed) PURE;
STDMETHOD(SetTrackWeight)(THIS_ DWORD Track, FLOAT Weight) PURE;
STDMETHOD(SetTrackAnimTime)(THIS_ DWORD Track, DOUBLE AnimTime) PURE;
STDMETHOD(SetTrackEnable)(THIS_ DWORD Track, BOOL Enable) PURE;
// Time
STDMETHOD_(DOUBLE, GetTime)(THIS) PURE;
STDMETHOD(SetTime)(THIS_ DOUBLE Time) PURE;
STDMETHOD(CloneAnimationController)(THIS_ UINT MaxNumMatrices, UINT MaxNumAnimationSets, UINT MaxNumTracks, UINT MaxNumEvents, LPD3DXANIMATIONCONTROLLER *ppAnimController) PURE;
STDMETHOD_(UINT, GetMaxNumMatrices)(THIS) PURE;
STDMETHOD_(UINT, GetMaxNumEvents)(THIS) PURE;
STDMETHOD_(UINT, GetMaxNumAnimationSets)(THIS) PURE;
// Sequencing abilities
STDMETHOD(KeyTrackSpeed)(THIS_ DWORD Track, FLOAT NewSpeed, DOUBLE StartTime, DOUBLE Duration, DWORD Method) PURE;
STDMETHOD(KeyTrackWeight)(THIS_ DWORD Track, FLOAT NewWeight, DOUBLE StartTime, DOUBLE Duration, DWORD Method) PURE;
STDMETHOD(KeyTrackAnimTime)(THIS_ DWORD Track, DOUBLE NewAnimTime, DOUBLE StartTime) PURE;
STDMETHOD(KeyTrackEnable)(THIS_ DWORD Track, BOOL NewEnable, DOUBLE StartTime) PURE;
// this functions sets the blend weight to be used to blend high and low priority tracks together.
// NOTE: this has no effect unless there are active animations on tracks for a given matrix that have both high and low results
STDMETHOD_(FLOAT, GetPriorityBlend)(THIS) PURE;
STDMETHOD(SetPriorityBlend)(THIS_ FLOAT BlendWeight) PURE;
STDMETHOD(KeyPriorityBlend)(THIS_ FLOAT NewBlendWeight, DOUBLE StartTime, DOUBLE Duration, DWORD Method) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//----------------------------------------------------------------------------
// D3DXCreateKeyFrameInterpolator:
// -------------------------------
// Creates a SRT key frame interpolator object from the given set of keys
//
// Parameters:
// ScaleKeys
// Array of scale key vectors
// NumScaleKeys
// Num elements in ScaleKeys array
// RotationKeys
// Array of rotation key quternions
// NumRotationKeys
// Num elements in RotationKeys array
// TranslateKeys
// Array of translation key vectors
// NumTranslateKeys
// Num elements in TranslateKeys array
// ScaleInputTimeBy
// All key times are scaled by this factor
// ppNewInterpolator
// Returns the keyframe interpolator interface
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateKeyFrameInterpolator(LPCSTR Name,
LPD3DXKEY_VECTOR3 ScaleKeys, UINT NumScaleKeys,
LPD3DXKEY_QUATERNION RotationKeys, UINT NumRotationKeys,
LPD3DXKEY_VECTOR3 TranslateKeys, UINT NumTranslateKeys,
DOUBLE ScaleInputTimeBy, LPD3DXKEYFRAMEINTERPOLATOR *ppNewInterpolator);
//----------------------------------------------------------------------------
// D3DXCreateAnimationSet:
// -----------------------
// Creates an animtions set interface given a set of interpolators
//
// Parameters:
// Name
// Name of the animation set
// pInterpolators
// Array of interpolators
// NumInterpolators
// Num elements in the pInterpolators array
// ppAnimSet
// Returns the animation set interface
//
//-----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateAnimationSet(LPCSTR Name,
LPD3DXINTERPOLATOR *ppInterpolators, UINT NumInterpolators,
LPD3DXANIMATIONSET *ppAnimSet);
//----------------------------------------------------------------------------
// D3DXCreateAnimationController:
// -------------------------
// Creates an animtion mixer object
//
// Parameters:
// MaxNumMatrices
// The upper limit for the number of matrices that can be animated by the
// the object
// MaxNumAnimationSets
// The upper limit of the number of animation sets that can be played by
// the object
// MaxNumTracks
// The upper limit of the number of animation sets that can be blended at
// any time.
// MaxNumEvents
// The upper limit of the number of outstanding events that can be
// scheduled at once.
// ppAnimController
// Returns the animation controller interface
//
//-----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateAnimationController(UINT MaxNumMatrices, UINT MaxNumAnimationSets, UINT MaxNumTracks, UINT MaxNumEvents,
LPD3DXANIMATIONCONTROLLER *ppAnimController);
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DX9ANIM_H__

572
third_party/dx9_sdk/include/d3dx9core.h vendored Normal file
View File

@ -0,0 +1,572 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx9core.h
// Content: D3DX core types and functions
//
///////////////////////////////////////////////////////////////////////////
#include "d3dx9.h"
#ifndef __D3DX9CORE_H__
#define __D3DX9CORE_H__
///////////////////////////////////////////////////////////////////////////
// D3DX_SDK_VERSION:
// -----------------
// This identifier is passed to D3DXCheckVersion in order to ensure that an
// application was built against the correct header files and lib files.
// This number is incremented whenever a header (or other) change would
// require applications to be rebuilt. If the version doesn't match,
// D3DXCreateVersion will return FALSE. (The number itself has no meaning.)
///////////////////////////////////////////////////////////////////////////
#define D3DX_VERSION 0x0900
#define D3DX_SDK_VERSION 9
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
BOOL WINAPI
D3DXCheckVersion(UINT D3DSdkVersion, UINT D3DXSdkVersion);
///////////////////////////////////////////////////////////////////////////
// D3DXGetDriverLevel:
// Returns driver version information:
//
// 700 - DX7 level driver
// 800 - DX8 level driver
// 900 - DX9 level driver
///////////////////////////////////////////////////////////////////////////
UINT WINAPI
D3DXGetDriverLevel(LPDIRECT3DDEVICE9 pDevice);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXBuffer:
// ------------
// The buffer object is used by D3DX to return arbitrary size data.
//
// GetBufferPointer -
// Returns a pointer to the beginning of the buffer.
//
// GetBufferSize -
// Returns the size of the buffer, in bytes.
///////////////////////////////////////////////////////////////////////////
typedef interface ID3DXBuffer ID3DXBuffer;
typedef interface ID3DXBuffer *LPD3DXBUFFER;
// {932E6A7E-C68E-45dd-A7BF-53D19C86DB1F}
DEFINE_GUID(IID_ID3DXBuffer,
0x932e6a7e, 0xc68e, 0x45dd, 0xa7, 0xbf, 0x53, 0xd1, 0x9c, 0x86, 0xdb, 0x1f);
#undef INTERFACE
#define INTERFACE ID3DXBuffer
DECLARE_INTERFACE_(ID3DXBuffer, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXBuffer
STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
};
///////////////////////////////////////////////////////////////////////////
// ID3DXFont:
// ----------
// Font objects contain the textures and resources needed to render
// a specific font on a specific device.
//
// Begin -
// Prepartes device for drawing text. This is optional.. if DrawText
// is called outside of Begin/End, it will call Begin and End for you.
//
// DrawText -
// Draws formatted text on a D3D device. Some parameters are
// surprisingly similar to those of GDI's DrawText function. See GDI
// documentation for a detailed description of these parameters.
//
// End -
// Restores device state to how it was when Begin was called.
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
//
///////////////////////////////////////////////////////////////////////////
typedef interface ID3DXFont ID3DXFont;
typedef interface ID3DXFont *LPD3DXFONT;
// {4AAE6B4D-D15F-4909-B09F-8D6AA34AC06B}
DEFINE_GUID( IID_ID3DXFont,
0x4aae6b4d, 0xd15f, 0x4909, 0xb0, 0x9f, 0x8d, 0x6a, 0xa3, 0x4a, 0xc0, 0x6b);
#undef INTERFACE
#define INTERFACE ID3DXFont
DECLARE_INTERFACE_(ID3DXFont, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXFont
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(GetLogFont)(THIS_ LOGFONT* pLogFont) PURE;
STDMETHOD(Begin)(THIS) PURE;
STDMETHOD_(INT, DrawTextA)(THIS_ LPCSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
STDMETHOD_(INT, DrawTextW)(THIS_ LPCWSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
STDMETHOD(End)(THIS) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifndef DrawText
#ifdef UNICODE
#define DrawText DrawTextW
#else
#define DrawText DrawTextA
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateFont(
LPDIRECT3DDEVICE9 pDevice,
HFONT hFont,
LPD3DXFONT* ppFont);
HRESULT WINAPI
D3DXCreateFontIndirect(
LPDIRECT3DDEVICE9 pDevice,
CONST LOGFONT* pLogFont,
LPD3DXFONT* ppFont);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXSprite:
// ------------
// This object intends to provide an easy way to drawing sprites using D3D.
//
// Begin -
// Prepares device for drawing sprites
//
// Draw, DrawAffine, DrawTransform -
// Draws a sprite in screen-space. Before transformation, the sprite is
// the size of SrcRect, with its top-left corner at the origin (0,0).
// The color and alpha channels are modulated by Color.
//
// End -
// Restores device state to how it was when Begin was called.
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
///////////////////////////////////////////////////////////////////////////
typedef interface ID3DXSprite ID3DXSprite;
typedef interface ID3DXSprite *LPD3DXSPRITE;
// {B07EC84A-8D35-4e86-A9A0-8DFF21D71075}
DEFINE_GUID( IID_ID3DXSprite,
0xb07ec84a, 0x8d35, 0x4e86, 0xa9, 0xa0, 0x8d, 0xff, 0x21, 0xd7, 0x10, 0x75);
#undef INTERFACE
#define INTERFACE ID3DXSprite
DECLARE_INTERFACE_(ID3DXSprite, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXSprite
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(Begin)(THIS) PURE;
STDMETHOD(Draw)(THIS_ LPDIRECT3DTEXTURE9 pSrcTexture,
CONST RECT* pSrcRect, CONST D3DXVECTOR2* pScaling,
CONST D3DXVECTOR2* pRotationCenter, FLOAT Rotation,
CONST D3DXVECTOR2* pTranslation, D3DCOLOR Color) PURE;
STDMETHOD(DrawTransform)(THIS_ LPDIRECT3DTEXTURE9 pSrcTexture,
CONST RECT* pSrcRect, CONST D3DXMATRIX* pTransform,
D3DCOLOR Color) PURE;
STDMETHOD(End)(THIS) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateSprite(
LPDIRECT3DDEVICE9 pDevice,
LPD3DXSPRITE* ppSprite);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXRenderToSurface:
// ---------------------
// This object abstracts rendering to surfaces. These surfaces do not
// necessarily need to be render targets. If they are not, a compatible
// render target is used, and the result copied into surface at end scene.
//
// BeginScene, EndScene -
// Call BeginScene() and EndScene() at the beginning and ending of your
// scene. These calls will setup and restore render targets, viewports,
// etc..
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
///////////////////////////////////////////////////////////////////////////
typedef struct _D3DXRTS_DESC
{
UINT Width;
UINT Height;
D3DFORMAT Format;
BOOL DepthStencil;
D3DFORMAT DepthStencilFormat;
} D3DXRTS_DESC;
typedef interface ID3DXRenderToSurface ID3DXRenderToSurface;
typedef interface ID3DXRenderToSurface *LPD3DXRENDERTOSURFACE;
// {0D014791-8863-4c2c-A1C0-02F3E0C0B653}
DEFINE_GUID( IID_ID3DXRenderToSurface,
0xd014791, 0x8863, 0x4c2c, 0xa1, 0xc0, 0x2, 0xf3, 0xe0, 0xc0, 0xb6, 0x53);
#undef INTERFACE
#define INTERFACE ID3DXRenderToSurface
DECLARE_INTERFACE_(ID3DXRenderToSurface, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXRenderToSurface
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(GetDesc)(THIS_ D3DXRTS_DESC* pDesc) PURE;
STDMETHOD(BeginScene)(THIS_ LPDIRECT3DSURFACE9 pSurface, CONST D3DVIEWPORT9* pViewport) PURE;
STDMETHOD(EndScene)(THIS_ DWORD MipFilter) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateRenderToSurface(
LPDIRECT3DDEVICE9 pDevice,
UINT Width,
UINT Height,
D3DFORMAT Format,
BOOL DepthStencil,
D3DFORMAT DepthStencilFormat,
LPD3DXRENDERTOSURFACE* ppRenderToSurface);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXRenderToEnvMap:
// --------------------
// This object abstracts rendering to environment maps. These surfaces
// do not necessarily need to be render targets. If they are not, a
// compatible render target is used, and the result copied into the
// environment map at end scene.
//
// BeginCube, BeginSphere, BeginHemisphere, BeginParabolic -
// This function initiates the rendering of the environment map. As
// parameters, you pass the textures in which will get filled in with
// the resulting environment map.
//
// Face -
// Call this function to initiate the drawing of each face. For each
// environment map, you will call this six times.. once for each face
// in D3DCUBEMAP_FACES.
//
// End -
// This will restore all render targets, and if needed compose all the
// rendered faces into the environment map surfaces.
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
///////////////////////////////////////////////////////////////////////////
typedef struct _D3DXRTE_DESC
{
UINT Size;
UINT MipLevels;
D3DFORMAT Format;
BOOL DepthStencil;
D3DFORMAT DepthStencilFormat;
} D3DXRTE_DESC;
typedef interface ID3DXRenderToEnvMap ID3DXRenderToEnvMap;
typedef interface ID3DXRenderToEnvMap *LPD3DXRenderToEnvMap;
// {1561135E-BC78-495b-8586-94EA537BD557}
DEFINE_GUID( IID_ID3DXRenderToEnvMap,
0x1561135e, 0xbc78, 0x495b, 0x85, 0x86, 0x94, 0xea, 0x53, 0x7b, 0xd5, 0x57);
#undef INTERFACE
#define INTERFACE ID3DXRenderToEnvMap
DECLARE_INTERFACE_(ID3DXRenderToEnvMap, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXRenderToEnvMap
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(GetDesc)(THIS_ D3DXRTE_DESC* pDesc) PURE;
STDMETHOD(BeginCube)(THIS_
LPDIRECT3DCUBETEXTURE9 pCubeTex) PURE;
STDMETHOD(BeginSphere)(THIS_
LPDIRECT3DTEXTURE9 pTex) PURE;
STDMETHOD(BeginHemisphere)(THIS_
LPDIRECT3DTEXTURE9 pTexZPos,
LPDIRECT3DTEXTURE9 pTexZNeg) PURE;
STDMETHOD(BeginParabolic)(THIS_
LPDIRECT3DTEXTURE9 pTexZPos,
LPDIRECT3DTEXTURE9 pTexZNeg) PURE;
STDMETHOD(Face)(THIS_ D3DCUBEMAP_FACES Face, DWORD MipFilter) PURE;
STDMETHOD(End)(THIS_ DWORD MipFilter) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateRenderToEnvMap(
LPDIRECT3DDEVICE9 pDevice,
UINT Size,
UINT MipLevels,
D3DFORMAT Format,
BOOL DepthStencil,
D3DFORMAT DepthStencilFormat,
LPD3DXRenderToEnvMap* ppRenderToEnvMap);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXLine:
// ------------
// This object intends to provide an easy way to draw lines using D3D.
//
// Begin -
// Prepares device for drawing lines
//
// Draw -
// Draws a line strip in screen-space.
// Input is in the form of a array defining points on the line strip. of D3DXVECTOR2
//
// DrawTransform -
// Draws a line in screen-space with a specified input transformation matrix.
//
// End -
// Restores device state to how it was when Begin was called.
//
// SetPattern -
// Applies a stipple pattern to the line. Input is one 32-bit
// DWORD which describes the stipple pattern. 1 is opaque, 0 is
// transparent.
//
// SetPatternScale -
// Stretches the stipple pattern in the u direction. Input is one
// floating-point value. 0.0f is no scaling, whereas 1.0f doubles
// the length of the stipple pattern.
//
// SetWidth -
// Specifies the thickness of the line in the v direction. Input is
// one floating-point value.
//
// SetAntialias -
// Toggles line antialiasing. Input is a BOOL.
// TRUE = Antialiasing on.
// FALSE = Antialiasing off.
//
// SetGLLines -
// Toggles non-antialiased OpenGL line emulation. Input is a BOOL.
// TRUE = OpenGL line emulation on.
// FALSE = OpenGL line emulation off.
//
// OpenGL line: Regular line:
// *\ *\
// | \ / \
// | \ *\ \
// *\ \ \ \
// \ \ \ \
// \ * \ *
// \ | \ /
// \| *
// *
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
///////////////////////////////////////////////////////////////////////////
typedef interface ID3DXLine ID3DXLine;
typedef interface ID3DXLine *LPD3DXLINE;
// {72CE4D70-CC40-4143-A896-32E50AD2EF35}
DEFINE_GUID( IID_ID3DXLine,
0x72ce4d70, 0xcc40, 0x4143, 0xa8, 0x96, 0x32, 0xe5, 0xa, 0xd2, 0xef, 0x35);
#undef INTERFACE
#define INTERFACE ID3DXLine
DECLARE_INTERFACE_(ID3DXLine, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXLine
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(Begin)(THIS) PURE;
STDMETHOD(Draw)(THIS_ CONST D3DXVECTOR2 *pVertexList,
DWORD dwVertexListCount, D3DCOLOR Color) PURE;
STDMETHOD(DrawTransform)(THIS_ CONST D3DXVECTOR3 *pVertexList,
DWORD dwVertexListCount, CONST D3DXMATRIX* pTransform,
D3DCOLOR Color) PURE;
STDMETHOD(SetPattern)(THIS_ DWORD dwPattern) PURE;
STDMETHOD_(DWORD, GetPattern)(THIS) PURE;
STDMETHOD(SetPatternScale)(THIS_ FLOAT fPatternScale) PURE;
STDMETHOD_(FLOAT, GetPatternScale)(THIS) PURE;
STDMETHOD(SetWidth)(THIS_ FLOAT fWidth) PURE;
STDMETHOD_(FLOAT, GetWidth)(THIS) PURE;
STDMETHOD(SetAntialias)(THIS_ BOOL bAntialias) PURE;
STDMETHOD_(BOOL, GetAntialias)(THIS) PURE;
STDMETHOD(SetGLLines)(THIS_ BOOL bGLLines) PURE;
STDMETHOD_(BOOL, GetGLLines)(THIS) PURE;
STDMETHOD(End)(THIS) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateLine(
LPDIRECT3DDEVICE9 pDevice,
LPD3DXLINE* ppLine);
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DX9CORE_H__

View File

@ -0,0 +1,688 @@
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: d3dx9effect.h
// Content: D3DX effect types and Shaders
//
//////////////////////////////////////////////////////////////////////////////
#include "d3dx9.h"
#ifndef __D3DX9EFFECT_H__
#define __D3DX9EFFECT_H__
//----------------------------------------------------------------------------
// D3DXFX_DONOTSAVESTATE
// This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
// is specified, device state is not saved and restored in Begin/End.
// D3DXFX_DONOTSAVESHADERSTATE
// This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
// is specified, shader device state is not saved and restored in Begin/End.
// This includes pixel/vertex shaders and shader constants
//----------------------------------------------------------------------------
#define D3DXFX_DONOTSAVESTATE (1 << 0)
#define D3DXFX_DONOTSAVESHADERSTATE (1 << 1)
//----------------------------------------------------------------------------
// D3DX_PARAMETER_SHARED
// Indicates that the value of a parameter will be shared with all effects
// which share the same namespace. Changing the value in one effect will
// change it in all.
//
// D3DX_PARAMETER_LITERAL
// Indicates that the value of this parameter can be treated as literal.
// Literal parameters can be marked when the effect is compiled, and their
// cannot be changed after the effect is compiled. Shared parameters cannot
// be literal.
//----------------------------------------------------------------------------
#define D3DX_PARAMETER_SHARED (1 << 0)
#define D3DX_PARAMETER_LITERAL (1 << 1)
#define D3DX_PARAMETER_ANNOTATION (1 << 2)
//----------------------------------------------------------------------------
// D3DXEFFECT_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXEFFECT_DESC
{
LPCSTR Creator; // Creator string
UINT Parameters; // Number of parameters
UINT Techniques; // Number of techniques
UINT Functions; // Number of function entrypoints
} D3DXEFFECT_DESC;
//----------------------------------------------------------------------------
// D3DXPARAMETER_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXPARAMETER_DESC
{
LPCSTR Name; // Parameter name
LPCSTR Semantic; // Parameter semantic
D3DXPARAMETER_CLASS Class; // Class
D3DXPARAMETER_TYPE Type; // Component type
UINT Rows; // Number of rows
UINT Columns; // Number of columns
UINT Elements; // Number of array elements
UINT Annotations; // Number of annotations
UINT StructMembers; // Number of structure member sub-parameters
DWORD Flags; // D3DX_PARAMETER_* flags
UINT Bytes; // Parameter size, in bytes
} D3DXPARAMETER_DESC;
//----------------------------------------------------------------------------
// D3DXTECHNIQUE_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXTECHNIQUE_DESC
{
LPCSTR Name; // Technique name
UINT Passes; // Number of passes
UINT Annotations; // Number of annotations
} D3DXTECHNIQUE_DESC;
//----------------------------------------------------------------------------
// D3DXPASS_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXPASS_DESC
{
LPCSTR Name; // Pass name
UINT Annotations; // Number of annotations
DWORD VSVersion; // Vertex shader version (0 in case of NULL shader)
DWORD PSVersion; // Pixel shader version (0 in case of NULL shader)
UINT VSSemanticsUsed;
D3DXSEMANTIC VSSemantics[MAXD3DDECLLENGTH];
UINT PSSemanticsUsed;
D3DXSEMANTIC PSSemantics[MAXD3DDECLLENGTH];
UINT PSSamplersUsed;
LPCSTR PSSamplers[16];
} D3DXPASS_DESC;
//----------------------------------------------------------------------------
// D3DXFUNCTION_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXFUNCTION_DESC
{
LPCSTR Name; // Function name
UINT Annotations; // Number of annotations
} D3DXFUNCTION_DESC;
//////////////////////////////////////////////////////////////////////////////
// ID3DXEffectPool ///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
typedef interface ID3DXEffectPool ID3DXEffectPool;
typedef interface ID3DXEffectPool *LPD3DXEFFECTPOOL;
// {53CA7768-C0D0-4664-8E79-D156E4F5B7E0}
DEFINE_GUID( IID_ID3DXEffectPool,
0x53ca7768, 0xc0d0, 0x4664, 0x8e, 0x79, 0xd1, 0x56, 0xe4, 0xf5, 0xb7, 0xe0);
#undef INTERFACE
#define INTERFACE ID3DXEffectPool
DECLARE_INTERFACE_(ID3DXEffectPool, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// No public methods
};
//////////////////////////////////////////////////////////////////////////////
// ID3DXBaseEffect ///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
typedef interface ID3DXBaseEffect ID3DXBaseEffect;
typedef interface ID3DXBaseEffect *LPD3DXBASEEFFECT;
// {804EF574-CCC1-4bf6-B06A-B1404ABDEADE}
DEFINE_GUID( IID_ID3DXBaseEffect,
0x804ef574, 0xccc1, 0x4bf6, 0xb0, 0x6a, 0xb1, 0x40, 0x4a, 0xbd, 0xea, 0xde);
#undef INTERFACE
#define INTERFACE ID3DXBaseEffect
DECLARE_INTERFACE_(ID3DXBaseEffect, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// Descs
STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
// Handle operations
STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index);
STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName);
STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
// Get/Set Parameters
STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
STDMETHOD(SetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 pPShader) PURE;
STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
STDMETHOD(SetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 pVShader) PURE;
STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// ID3DXEffect ///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
typedef interface ID3DXEffect ID3DXEffect;
typedef interface ID3DXEffect *LPD3DXEFFECT;
// {B589B04A-293D-4516-AF0B-3D7DBCF5AC54}
DEFINE_GUID( IID_ID3DXEffect,
0xb589b04a, 0x293d, 0x4516, 0xaf, 0xb, 0x3d, 0x7d, 0xbc, 0xf5, 0xac, 0x54);
#undef INTERFACE
#define INTERFACE ID3DXEffect
DECLARE_INTERFACE_(ID3DXEffect, ID3DXBaseEffect)
{
// ID3DXBaseEffect
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// Descs
STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
// Handle operations
STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index);
STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName);
STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
// Get/Set Parameters
STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
STDMETHOD(SetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 pPShader) PURE;
STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
STDMETHOD(SetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 pVShader) PURE;
STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
// ID3DXBaseEffect
// Pool
STDMETHOD(GetPool)(THIS_ LPD3DXEFFECTPOOL* ppPool) PURE;
// Selecting and setting a technique
STDMETHOD(SetTechnique)(THIS_ D3DXHANDLE hTechnique) PURE;
STDMETHOD_(D3DXHANDLE, GetCurrentTechnique)(THIS) PURE;
STDMETHOD(ValidateTechnique)(THIS_ D3DXHANDLE hTechnique) PURE;
STDMETHOD(FindNextValidTechnique)(THIS_ D3DXHANDLE hTechnique, D3DXHANDLE *pTechnique) PURE;
STDMETHOD_(BOOL, IsParameterUsed)(THIS_ D3DXHANDLE hParameter, D3DXHANDLE hTechnique) PURE;
// Using current technique
STDMETHOD(Begin)(THIS_ UINT *pPasses, DWORD Flags) PURE;
STDMETHOD(Pass)(THIS_ UINT Pass) PURE;
STDMETHOD(End)(THIS) PURE;
// Managing D3D Device
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
// Cloning
STDMETHOD(CloneEffect)(THIS_ LPDIRECT3DDEVICE9 pDevice, LPD3DXEFFECT* ppEffect) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// ID3DXEffectCompiler ///////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
typedef interface ID3DXEffectCompiler ID3DXEffectCompiler;
typedef interface ID3DXEffectCompiler *LPD3DXEFFECTCOMPILER;
// {F8EE90D3-FCC6-4f14-8AE8-6374AE968E33}
DEFINE_GUID( IID_ID3DXEffectCompiler,
0xf8ee90d3, 0xfcc6, 0x4f14, 0x8a, 0xe8, 0x63, 0x74, 0xae, 0x96, 0x8e, 0x33);
#undef INTERFACE
#define INTERFACE ID3DXEffectCompiler
DECLARE_INTERFACE_(ID3DXEffectCompiler, ID3DXBaseEffect)
{
// ID3DXBaseEffect
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// Descs
STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
// Handle operations
STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index);
STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName);
STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
// Get/Set Parameters
STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
STDMETHOD(SetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 pPShader) PURE;
STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
STDMETHOD(SetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 pVShader) PURE;
STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
// ID3DXBaseEffect
// Parameter sharing, specialization, and information
STDMETHOD(SetLiteral)(THIS_ D3DXHANDLE hParameter, BOOL Literal) PURE;
STDMETHOD(GetLiteral)(THIS_ D3DXHANDLE hParameter, BOOL *pLiteral) PURE;
// Compilation
STDMETHOD(CompileEffect)(THIS_ DWORD Flags,
LPD3DXBUFFER* ppEffect, LPD3DXBUFFER* ppErrorMsgs) PURE;
STDMETHOD(CompileShader)(THIS_ D3DXHANDLE hFunction, LPCSTR pTarget, DWORD Flags,
LPD3DXBUFFER* ppShader, LPD3DXBUFFER* ppErrorMsgs, LPD3DXCONSTANTTABLE* ppConstantTable) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// APIs //////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//----------------------------------------------------------------------------
// D3DXCreateEffectPool:
// ---------------------
// Creates an effect pool. Pools are used for sharing parameters between
// multiple effects. For all effects within a pool, shared parameters of the
// same name all share the same value.
//
// Parameters:
// ppPool
// Returns the created pool.
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateEffectPool(
LPD3DXEFFECTPOOL* ppPool);
//----------------------------------------------------------------------------
// D3DXCreateEffect:
// -----------------
// Creates an effect from an ascii or binary effect description.
//
// Parameters:
// pDevice
// Pointer of the device on which to create the effect
// pSrcFile
// Name of the file containing the effect description
// hSrcModule
// Module handle. if NULL, current module will be used.
// pSrcResource
// Resource name in module
// pSrcData
// Pointer to effect description
// SrcDataSize
// Size of the effect description in bytes
// pDefines
// Optional NULL-terminated array of preprocessor macro definitions.
// pInclude
// Optional interface pointer to use for handling #include directives.
// If this parameter is NULL, #includes will be honored when compiling
// from file, and will error when compiling from resource or memory.
// pPool
// Pointer to ID3DXEffectPool object to use for shared parameters.
// If NULL, no parameters will be shared.
// ppEffect
// Returns a buffer containing created effect.
// ppCompilationErrors
// Returns a buffer containing any error messages which occurred during
// compile. Or NULL if you do not care about the error messages.
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateEffectFromFileA(
LPDIRECT3DDEVICE9 pDevice,
LPCSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
HRESULT WINAPI
D3DXCreateEffectFromFileW(
LPDIRECT3DDEVICE9 pDevice,
LPCWSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef UNICODE
#define D3DXCreateEffectFromFile D3DXCreateEffectFromFileW
#else
#define D3DXCreateEffectFromFile D3DXCreateEffectFromFileA
#endif
HRESULT WINAPI
D3DXCreateEffectFromResourceA(
LPDIRECT3DDEVICE9 pDevice,
HMODULE hSrcModule,
LPCSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
HRESULT WINAPI
D3DXCreateEffectFromResourceW(
LPDIRECT3DDEVICE9 pDevice,
HMODULE hSrcModule,
LPCWSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef UNICODE
#define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceW
#else
#define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceA
#endif
HRESULT WINAPI
D3DXCreateEffect(
LPDIRECT3DDEVICE9 pDevice,
LPCVOID pSrcData,
UINT SrcDataLen,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
//----------------------------------------------------------------------------
// D3DXCreateEffectCompiler:
// -------------------------
// Creates an effect from an ascii or binary effect description.
//
// Parameters:
// pSrcFile
// Name of the file containing the effect description
// hSrcModule
// Module handle. if NULL, current module will be used.
// pSrcResource
// Resource name in module
// pSrcData
// Pointer to effect description
// SrcDataSize
// Size of the effect description in bytes
// pDefines
// Optional NULL-terminated array of preprocessor macro definitions.
// pInclude
// Optional interface pointer to use for handling #include directives.
// If this parameter is NULL, #includes will be honored when compiling
// from file, and will error when compiling from resource or memory.
// pPool
// Pointer to ID3DXEffectPool object to use for shared parameters.
// If NULL, no parameters will be shared.
// ppCompiler
// Returns a buffer containing created effect compiler.
// ppParseErrors
// Returns a buffer containing any error messages which occurred during
// parse. Or NULL if you do not care about the error messages.
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateEffectCompilerFromFileA(
LPCSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTCOMPILER* ppCompiler,
LPD3DXBUFFER* ppParseErrors);
HRESULT WINAPI
D3DXCreateEffectCompilerFromFileW(
LPCWSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTCOMPILER* ppCompiler,
LPD3DXBUFFER* ppParseErrors);
#ifdef UNICODE
#define D3DXCreateEffectCompilerFromFile D3DXCreateEffectCompilerFromFileW
#else
#define D3DXCreateEffectCompilerFromFile D3DXCreateEffectCompilerFromFileA
#endif
HRESULT WINAPI
D3DXCreateEffectCompilerFromResourceA(
HMODULE hSrcModule,
LPCSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTCOMPILER* ppCompiler,
LPD3DXBUFFER* ppParseErrors);
HRESULT WINAPI
D3DXCreateEffectCompilerFromResourceW(
HMODULE hSrcModule,
LPCWSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTCOMPILER* ppCompiler,
LPD3DXBUFFER* ppParseErrors);
#ifdef UNICODE
#define D3DXCreateEffectCompilerFromResource D3DXCreateEffectCompilerFromResourceW
#else
#define D3DXCreateEffectCompilerFromResource D3DXCreateEffectCompilerFromResourceA
#endif
HRESULT WINAPI
D3DXCreateEffectCompiler(
LPCSTR pSrcData,
UINT SrcDataLen,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTCOMPILER* ppCompiler,
LPD3DXBUFFER* ppParseErrors);
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DX9EFFECT_H__

1389
third_party/dx9_sdk/include/d3dx9math.h vendored Normal file

File diff suppressed because it is too large Load Diff

2165
third_party/dx9_sdk/include/d3dx9math.inl vendored Normal file

File diff suppressed because it is too large Load Diff

1347
third_party/dx9_sdk/include/d3dx9mesh.h vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,905 @@
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: d3dx9shader.h
// Content: D3DX Shader APIs
//
//////////////////////////////////////////////////////////////////////////////
#include "d3dx9.h"
#ifndef __D3DX9SHADER_H__
#define __D3DX9SHADER_H__
//---------------------------------------------------------------------------
// D3DXTX_VERSION:
// --------------
// Version token used to create a procedural texture filler in effects
// Used by D3DXFill[]TX functions
//---------------------------------------------------------------------------
#define D3DXTX_VERSION(_Major,_Minor) (('T' << 24) | ('X' << 16) | ((_Major) << 8) | (_Minor))
//----------------------------------------------------------------------------
// D3DXSHADER flags:
// -----------------
// D3DXSHADER_DEBUG
// Insert debug file/line/type/symbol information.
//
// D3DXSHADER_SKIPVALIDATION
// Do not validate the generated code against known capabilities and
// constraints. This option is only recommended when compiling shaders
// you KNOW will work. (ie. have compiled before without this option.)
// Shaders are always validated by D3D before they are set to the device.
//
// D3DXSHADER_SKIPOPTIMIZATION (valid for D3DXCompileShader calls only)
// Instructs the compiler to skip optimization steps during code generation.
// Unless you are trying to isolate a problem in your code, and suspect the
// compiler, using this option is not recommended.
//
// D3DXSHADER_PACKMATRIX_ROWMAJOR
// Unless explicitly specified, matrices will be packed in row-major order
// on input and output from the shader.
//
// D3DXSHADER_PACKMATRIX_COLUMNMAJOR
// Unless explicitly specified, matrices will be packed in column-major
// order on input and output from the shader. This is generally more
// efficient, since it allows vector-matrix multiplication to be performed
// using a series of dot-products.
//----------------------------------------------------------------------------
#define D3DXSHADER_DEBUG (1 << 0)
#define D3DXSHADER_SKIPVALIDATION (1 << 2)
#define D3DXSHADER_SKIPOPTIMIZATION (1 << 3)
#define D3DXSHADER_PACKMATRIX_ROWMAJOR (1 << 4)
#define D3DXSHADER_PACKMATRIX_COLUMNMAJOR (1 << 5)
//----------------------------------------------------------------------------
// D3DXHANDLE:
// -----------
// Handle values used to efficiently reference shader and effect parameters.
// Strings can be used as handles. However, handles are not always strings.
//----------------------------------------------------------------------------
typedef LPCSTR D3DXHANDLE;
typedef D3DXHANDLE *LPD3DXHANDLE;
//----------------------------------------------------------------------------
// D3DXMACRO:
// ----------
// Preprocessor macro definition. The application pass in a NULL-terminated
// array of this structure to various D3DX APIs. This enables the application
// to #define tokens at runtime, before the file is parsed.
//----------------------------------------------------------------------------
typedef struct _D3DXMACRO
{
LPCSTR Name;
LPCSTR Definition;
} D3DXMACRO, *LPD3DXMACRO;
//----------------------------------------------------------------------------
// D3DXSEMANTIC:
//----------------------------------------------------------------------------
typedef struct _D3DXSEMANTIC
{
UINT Usage;
UINT UsageIndex;
} D3DXSEMANTIC, *LPD3DXSEMANTIC;
//----------------------------------------------------------------------------
// D3DXFRAGMENT_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXFRAGMENT_DESC
{
LPCSTR Name;
DWORD Target;
} D3DXFRAGMENT_DESC, *LPD3DXFRAGMENT_DESC;
//----------------------------------------------------------------------------
// D3DXREGISTER_SET:
//----------------------------------------------------------------------------
typedef enum _D3DXREGISTER_SET
{
D3DXRS_BOOL,
D3DXRS_INT4,
D3DXRS_FLOAT4,
D3DXRS_SAMPLER,
// force 32-bit size enum
D3DXRS_FORCE_DWORD = 0x7fffffff
} D3DXREGISTER_SET, *LPD3DXREGISTER_SET;
//----------------------------------------------------------------------------
// D3DXPARAMETER_CLASS:
//----------------------------------------------------------------------------
typedef enum _D3DXPARAMETER_CLASS
{
D3DXPC_SCALAR,
D3DXPC_VECTOR,
D3DXPC_MATRIX_ROWS,
D3DXPC_MATRIX_COLUMNS,
D3DXPC_OBJECT,
D3DXPC_STRUCT,
// force 32-bit size enum
D3DXPC_FORCE_DWORD = 0x7fffffff
} D3DXPARAMETER_CLASS, *LPD3DXPARAMETER_CLASS;
//----------------------------------------------------------------------------
// D3DXPARAMETER_TYPE:
//----------------------------------------------------------------------------
typedef enum _D3DXPARAMETER_TYPE
{
D3DXPT_VOID,
D3DXPT_BOOL,
D3DXPT_INT,
D3DXPT_FLOAT,
D3DXPT_STRING,
D3DXPT_TEXTURE,
D3DXPT_TEXTURE1D,
D3DXPT_TEXTURE2D,
D3DXPT_TEXTURE3D,
D3DXPT_TEXTURECUBE,
D3DXPT_SAMPLER,
D3DXPT_SAMPLER1D,
D3DXPT_SAMPLER2D,
D3DXPT_SAMPLER3D,
D3DXPT_SAMPLERCUBE,
D3DXPT_PIXELSHADER,
D3DXPT_VERTEXSHADER,
D3DXPT_PIXELFRAGMENT,
D3DXPT_VERTEXFRAGMENT,
// force 32-bit size enum
D3DXPT_FORCE_DWORD = 0x7fffffff
} D3DXPARAMETER_TYPE, *LPD3DXPARAMETER_TYPE;
//----------------------------------------------------------------------------
// D3DXCONSTANTTABLE_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXCONSTANTTABLE_DESC
{
LPCSTR Creator; // Creator string
DWORD Version; // Shader version
UINT Constants; // Number of constants
} D3DXCONSTANTTABLE_DESC, *LPD3DXCONSTANTTABLE_DESC;
//----------------------------------------------------------------------------
// D3DXCONSTANT_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXCONSTANT_DESC
{
LPCSTR Name; // Constant name
D3DXREGISTER_SET RegisterSet; // Register set
UINT RegisterIndex; // Register index
UINT RegisterCount; // Number of registers occupied
D3DXPARAMETER_CLASS Class; // Class
D3DXPARAMETER_TYPE Type; // Component type
UINT Rows; // Number of rows
UINT Columns; // Number of columns
UINT Elements; // Number of array elements
UINT StructMembers; // Number of structure member sub-parameters
UINT Bytes; // Data size, in bytes
LPCVOID DefaultValue; // Pointer to default value
} D3DXCONSTANT_DESC, *LPD3DXCONSTANT_DESC;
//----------------------------------------------------------------------------
// ID3DXConstantTable:
//----------------------------------------------------------------------------
typedef interface ID3DXConstantTable ID3DXConstantTable;
typedef interface ID3DXConstantTable *LPD3DXCONSTANTTABLE;
// {9DCA3190-38B9-4fc3-92E3-39C6DDFB358B}
DEFINE_GUID( IID_ID3DXConstantTable,
0x9dca3190, 0x38b9, 0x4fc3, 0x92, 0xe3, 0x39, 0xc6, 0xdd, 0xfb, 0x35, 0x8b);
#undef INTERFACE
#define INTERFACE ID3DXConstantTable
DECLARE_INTERFACE_(ID3DXConstantTable, ID3DXBuffer)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXBuffer
STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
// Descs
STDMETHOD(GetDesc)(THIS_ D3DXCONSTANTTABLE_DESC *pDesc) PURE;
STDMETHOD(GetConstantDesc)(THIS_ D3DXHANDLE hConstant, D3DXCONSTANT_DESC *pConstantDesc, UINT *pCount) PURE;
// Handle operations
STDMETHOD_(D3DXHANDLE, GetConstant)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetConstantByName)(THIS_ D3DXHANDLE hConstant, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetConstantElement)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
// Set Constants
STDMETHOD(SetDefaults)(THIS_ LPDIRECT3DDEVICE9 pDevice) PURE;
STDMETHOD(SetValue)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, LPCVOID pData, UINT Bytes) PURE;
STDMETHOD(SetBool)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, BOOL b) PURE;
STDMETHOD(SetBoolArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST BOOL* pb, UINT Count) PURE;
STDMETHOD(SetInt)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, INT n) PURE;
STDMETHOD(SetIntArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST INT* pn, UINT Count) PURE;
STDMETHOD(SetFloat)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, FLOAT f) PURE;
STDMETHOD(SetFloatArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST FLOAT* pf, UINT Count) PURE;
STDMETHOD(SetVector)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector) PURE;
STDMETHOD(SetVectorArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(SetMatrix)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixPointerArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTranspose)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixTransposeArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
};
//----------------------------------------------------------------------------
// ID3DXFragmentLinker
//----------------------------------------------------------------------------
#undef INTERFACE
#define INTERFACE ID3DXFragmentLinker
// {D59D3777-C973-4a3c-B4B0-2A62CD3D8B40}
DEFINE_GUID(IID_ID3DXFragmentLinker,
0xd59d3777, 0xc973, 0x4a3c, 0xb4, 0xb0, 0x2a, 0x62, 0xcd, 0x3d, 0x8b, 0x40);
DECLARE_INTERFACE_(ID3DXFragmentLinker, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXFragmentLinker
// fragment access and information retrieval functions
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD_(UINT, GetNumberOfFragments)(THIS) PURE;
STDMETHOD_(D3DXHANDLE, GetFragmentHandleByIndex)(THIS_ UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetFragmentHandleByName)(THIS_ LPCSTR Name) PURE;
STDMETHOD(GetFragmentDesc)(THIS_ D3DXHANDLE Name, LPD3DXFRAGMENT_DESC FragDesc) PURE;
// add the fragments in the buffer to the linker
STDMETHOD(AddFragments)(THIS_ CONST DWORD *Fragments) PURE;
// Create a buffer containing the fragments. Suitable for saving to disk
STDMETHOD(GetAllFragments)(THIS_ LPD3DXBUFFER *ppBuffer) PURE;
STDMETHOD(GetFragment)(THIS_ D3DXHANDLE Name, LPD3DXBUFFER *ppBuffer) PURE;
STDMETHOD(LinkShader)(THIS_ LPCSTR pTarget, DWORD Flags, LPD3DXHANDLE rgFragmentHandles, UINT cFragments, LPD3DXBUFFER *ppBuffer, LPD3DXBUFFER *ppErrorMsgs) PURE;
STDMETHOD(LinkVertexShader)(THIS_ LPCSTR pTarget, DWORD Flags, LPD3DXHANDLE rgFragmentHandles, UINT cFragments, LPDIRECT3DVERTEXSHADER9 *pVShader, LPD3DXBUFFER *ppErrorMsgs) PURE;
STDMETHOD(ClearCache)(THIS) PURE;
};
//----------------------------------------------------------------------------
// D3DXINCLUDE_TYPE:
//----------------------------------------------------------------------------
typedef enum _D3DXINCLUDE_TYPE
{
D3DXINC_LOCAL,
D3DXINC_SYSTEM,
// force 32-bit size enum
D3DXINC_FORCE_DWORD = 0x7fffffff
} D3DXINCLUDE_TYPE, *LPD3DXINCLUDE_TYPE;
//----------------------------------------------------------------------------
// ID3DXInclude:
// -------------
// This interface is intended to be implemented by the application, and can
// be used by various D3DX APIs. This enables application-specific handling
// of #include directives in source files.
//
// Open()
// Opens an include file. If successful, it should fill in ppData and
// pBytes. The data pointer returned must remain valid until Close is
// subsequently called.
// Close()
// Closes an include file. If Open was successful, Close is guaranteed
// to be called before the API using this interface returns.
//----------------------------------------------------------------------------
typedef interface ID3DXInclude ID3DXInclude;
typedef interface ID3DXInclude *LPD3DXINCLUDE;
#undef INTERFACE
#define INTERFACE ID3DXInclude
DECLARE_INTERFACE(ID3DXInclude)
{
STDMETHOD(Open)(D3DXINCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
STDMETHOD(Close)(LPCVOID pData) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// APIs //////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//----------------------------------------------------------------------------
// D3DXAssembleShader:
// -------------------
// Assembles a shader.
//
// Parameters:
// pSrcFile
// Source file name
// hSrcModule
// Module handle. if NULL, current module will be used
// pSrcResource
// Resource name in module
// pSrcData
// Pointer to source code
// SrcDataLen
// Size of source code, in bytes
// pDefines
// Optional NULL-terminated array of preprocessor macro definitions.
// pInclude
// Optional interface pointer to use for handling #include directives.
// If this parameter is NULL, #includes will be honored when assembling
// from file, and will error when assembling from resource or memory.
// Flags
// See D3DXSHADER_xxx flags
// ppShader
// Returns a buffer containing the created shader. This buffer contains
// the assembled shader code, as well as any embedded debug info.
// (See D3DXGetShaderDebugInfo)
// ppErrorMsgs
// Returns a buffer containing a listing of errors and warnings that were
// encountered during assembly. If you are running in a debugger,
// these are the same messages you will see in your debug output.
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXAssembleShaderFromFileA(
LPCSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs);
HRESULT WINAPI
D3DXAssembleShaderFromFileW(
LPCWSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs);
#ifdef UNICODE
#define D3DXAssembleShaderFromFile D3DXAssembleShaderFromFileW
#else
#define D3DXAssembleShaderFromFile D3DXAssembleShaderFromFileA
#endif
HRESULT WINAPI
D3DXAssembleShaderFromResourceA(
HMODULE hSrcModule,
LPCSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs);
HRESULT WINAPI
D3DXAssembleShaderFromResourceW(
HMODULE hSrcModule,
LPCWSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs);
#ifdef UNICODE
#define D3DXAssembleShaderFromResource D3DXAssembleShaderFromResourceW
#else
#define D3DXAssembleShaderFromResource D3DXAssembleShaderFromResourceA
#endif
HRESULT WINAPI
D3DXAssembleShader(
LPCSTR pSrcData,
UINT SrcDataLen,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs);
//----------------------------------------------------------------------------
// D3DXCompileShader:
// ------------------
// Compiles a shader.
//
// Parameters:
// pSrcFile
// Source file name.
// hSrcModule
// Module handle. if NULL, current module will be used.
// pSrcResource
// Resource name in module.
// pSrcData
// Pointer to source code.
// SrcDataLen
// Size of source code, in bytes.
// pDefines
// Optional NULL-terminated array of preprocessor macro definitions.
// pInclude
// Optional interface pointer to use for handling #include directives.
// If this parameter is NULL, #includes will be honored when compiling
// from file, and will error when compiling from resource or memory.
// pFunctionName
// Name of the entrypoint function where execution should begin.
// pTarget
// Instruction set to be used when generating code. Currently supported
// targets are "vs_1_1", "vs_2_0", "vs_2_sw", "ps_1_1", "ps_1_2", "ps_1_3",
// "ps_1_4", "ps_2_0", "ps_2_sw", "tx_1_0"
// Flags
// See D3DXSHADER_xxx flags.
// ppShader
// Returns a buffer containing the created shader. This buffer contains
// the compiled shader code, as well as any embedded debug and symbol
// table info. (See D3DXGetShaderDebugInfo, D3DXGetShaderConstantTable)
// ppErrorMsgs
// Returns a buffer containing a listing of errors and warnings that were
// encountered during the compile. If you are running in a debugger,
// these are the same messages you will see in your debug output.
// ppConstantTable
// Returns a ID3DXConstantTable object which can be used to set
// shader constants to the device. Alternatively, an application can
// parse the D3DXSHADER_CONSTANTTABLE block embedded as a comment within
// the shader.
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCompileShaderFromFileA(
LPCSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPCSTR pFunctionName,
LPCSTR pTarget,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs,
LPD3DXCONSTANTTABLE* ppConstantTable);
HRESULT WINAPI
D3DXCompileShaderFromFileW(
LPCWSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPCSTR pFunctionName,
LPCSTR pTarget,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs,
LPD3DXCONSTANTTABLE* ppConstantTable);
#ifdef UNICODE
#define D3DXCompileShaderFromFile D3DXCompileShaderFromFileW
#else
#define D3DXCompileShaderFromFile D3DXCompileShaderFromFileA
#endif
HRESULT WINAPI
D3DXCompileShaderFromResourceA(
HMODULE hSrcModule,
LPCSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPCSTR pFunctionName,
LPCSTR pTarget,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs,
LPD3DXCONSTANTTABLE* ppConstantTable);
HRESULT WINAPI
D3DXCompileShaderFromResourceW(
HMODULE hSrcModule,
LPCWSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPCSTR pFunctionName,
LPCSTR pTarget,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs,
LPD3DXCONSTANTTABLE* ppConstantTable);
#ifdef UNICODE
#define D3DXCompileShaderFromResource D3DXCompileShaderFromResourceW
#else
#define D3DXCompileShaderFromResource D3DXCompileShaderFromResourceA
#endif
HRESULT WINAPI
D3DXCompileShader(
LPCSTR pSrcData,
UINT SrcDataLen,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPCSTR pFunctionName,
LPCSTR pTarget,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs,
LPD3DXCONSTANTTABLE* ppConstantTable);
//----------------------------------------------------------------------------
// D3DXFindShaderComment:
// ----------------------
// Searches through a shader for a particular comment, denoted by a FourCC in
// the first DWORD of the comment. If the comment is not found, and no other
// error has occurred, S_FALSE is returned.
//
// Parameters:
// pFunction
// Pointer to the function DWORD stream
// FourCC
// FourCC used to identify the desired comment block.
// ppData
// Returns a pointer to the comment data (not including comment token
// and FourCC). Can be NULL.
// pSizeInBytes
// Returns the size of the comment data in bytes. Can be NULL.
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXFindShaderComment(
CONST DWORD* pFunction,
DWORD FourCC,
LPCVOID* ppData,
UINT* pSizeInBytes);
//----------------------------------------------------------------------------
// D3DXGetShaderSemantics:
// -----------------------
// Gets semantics for all input elements referenced inside a given shader.
//
// Parameters:
// pFunction
// Pointer to the function DWORD stream
// pSemantics
// Pointer to an array of D3DXSEMANTIC structures. The function will
// fill this array with the semantics for each input element referenced
// inside the shader. This array is assumed to contain at least
// MAXD3DDECLLENGTH elements.
// pCount
// Returns the number of elements referenced by the shader
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXGetShaderInputSemantics(
CONST DWORD* pFunction,
D3DXSEMANTIC* pSemantics,
UINT* pCount);
HRESULT WINAPI
D3DXGetShaderOutputSemantics(
CONST DWORD* pFunction,
D3DXSEMANTIC* pSemantics,
UINT* pCount);
//----------------------------------------------------------------------------
// D3DXGetShaderSamplers:
// ----------------------
// Gets semantics for all input elements referenced inside a given shader.
//
// pFunction
// Pointer to the function DWORD stream
// pSamplers
// Pointer to an array of LPCSTRs. The function will fill this array
// with pointers to the sampler names contained within pFunction, for
// each sampler referenced inside the shader. This array is assumed to
// contain at least 16 elements.
// pCount
// Returns the number of samplers referenced by the shader
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXGetShaderSamplers(
CONST DWORD* pFunction,
LPCSTR* pSamplers,
UINT* pCount);
//----------------------------------------------------------------------------
// D3DXGetShaderConstantTable:
// ---------------------------
// Gets shader constant table embedded inside shader. A constant table is
// generated by D3DXAssembleShader and D3DXCompileShader, and is embedded in
// the body of the shader.
//
// Parameters:
// pFunction
// Pointer to the function DWORD stream
// ppConstantTable
// Returns a ID3DXConstantTable object which can be used to set
// shader constants to the device. Alternatively, an application can
// parse the D3DXSHADER_CONSTANTTABLE block embedded as a comment within
// the shader.
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXGetShaderConstantTable(
CONST DWORD* pFunction,
LPD3DXCONSTANTTABLE* ppConstantTable);
//----------------------------------------------------------------------------
// D3DXGetShaderDebugInfo:
// -----------------------
// Gets shader debug info. Debug info is generated D3DXAssembleShader and
// D3DXCompileShader and is embedded the body of the shader.
//
// Parameters:
// pFunction
// Pointer to the function DWORD stream
// ppDebugInfo
// Buffer used to return debug info. For information about the layout
// of this buffer, see definition of D3DXSHADER_DEBUGINFO above.
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXGetShaderDebugInfo(
CONST DWORD* pFunction,
LPD3DXBUFFER* ppDebugInfo);
//----------------------------------------------------------------------------
// D3DXGatherFragments:
// -------------------
// Assembles shader fragments into a buffer to be passed to a fragment linker.
// will generate shader fragments for all fragments in the file
//
// Parameters:
// pSrcFile
// Source file name
// hSrcModule
// Module handle. if NULL, current module will be used
// pSrcResource
// Resource name in module
// pSrcData
// Pointer to source code
// SrcDataLen
// Size of source code, in bytes
// pDefines
// Optional NULL-terminated array of preprocessor macro definitions.
// pInclude
// Optional interface pointer to use for handling #include directives.
// If this parameter is NULL, #includes will be honored when assembling
// from file, and will error when assembling from resource or memory.
// Flags
// See D3DXSHADER_xxx flags
// ppShader
// Returns a buffer containing the created shader fragments. This buffer contains
// the assembled shader code, as well as any embedded debug info.
// ppErrorMsgs
// Returns a buffer containing a listing of errors and warnings that were
// encountered during assembly. If you are running in a debugger,
// these are the same messages you will see in your debug output.
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXGatherFragmentsFromFileA(
LPCSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs);
HRESULT WINAPI
D3DXGatherFragmentsFromFileW(
LPCWSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs);
#ifdef UNICODE
#define D3DXGatherFragmentsFromFile D3DXGatherFragmentsFromFileW
#else
#define D3DXGatherFragmentsFromFile D3DXGatherFragmentsFromFileA
#endif
HRESULT WINAPI
D3DXGatherFragmentsFromResourceA(
HMODULE hSrcModule,
LPCSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs);
HRESULT WINAPI
D3DXGatherFragmentsFromResourceW(
HMODULE hSrcModule,
LPCWSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs);
#ifdef UNICODE
#define D3DXGatherFragmentsFromResource D3DXGatherFragmentsFromResourceW
#else
#define D3DXGatherFragmentsFromResource D3DXGatherFragmentsFromResourceA
#endif
HRESULT WINAPI
D3DXGatherFragments(
LPCSTR pSrcData,
UINT SrcDataLen,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXBUFFER* ppShader,
LPD3DXBUFFER* ppErrorMsgs);
typedef ID3DXFragmentLinker *LPD3DXFRAGMENTLINKER;
//----------------------------------------------------------------------------
// D3DXCreateFragmentLinker:
// -------------------------
// Creates a fragment linker with a given cache size. The interface returned
// can be used to link together shader fragments. (both HLSL & ASM fragements)
//
// Parameters:
// pDevice
// Pointer of the device on which to create the effect
// ShaderCacheSize
// Size of the shader cache
// ppFragmentLinker
// pointer to a memory location to put the created interface pointer
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateFragmentLinker(
LPDIRECT3DDEVICE9 pDevice,
UINT ShaderCacheSize,
LPD3DXFRAGMENTLINKER* ppFragmentLinker);
#ifdef __cplusplus
}
#endif //__cplusplus
//////////////////////////////////////////////////////////////////////////////
// Shader comment block layouts //////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------
// D3DXSHADER_CONSTANTTABLE:
// -------------------------
// Shader constant information; included as an CTAB comment block inside
// shaders. All offsets are BYTE offsets from start of CONSTANTTABLE struct.
// Entries in the table are sorted by Name in ascending order.
//----------------------------------------------------------------------------
typedef struct _D3DXSHADER_CONSTANTTABLE
{
DWORD Size; // sizeof(D3DXSHADER_CONSTANTTABLE)
DWORD Creator; // LPCSTR offset
DWORD Version; // shader version
DWORD Constants; // number of constants
DWORD ConstantInfo; // D3DXSHADER_CONSTANTINFO[Constants] offset
} D3DXSHADER_CONSTANTTABLE, *LPD3DXSHADER_CONSTANTTABLE;
typedef struct _D3DXSHADER_CONSTANTINFO
{
DWORD Name; // LPCSTR offset
WORD RegisterSet; // D3DXREGISTER_SET
WORD RegisterIndex; // register number
WORD RegisterCount; // number of registers
WORD Reserved; // reserved
DWORD TypeInfo; // D3DXSHADER_TYPEINFO offset
DWORD DefaultValue; // offset of default value
} D3DXSHADER_CONSTANTINFO, *LPD3DXSHADER_CONSTANTINFO;
typedef struct _D3DXSHADER_TYPEINFO
{
WORD Class; // D3DXPARAMETER_CLASS
WORD Type; // D3DXPARAMETER_TYPE
WORD Rows; // number of rows (matrices)
WORD Columns; // number of columns (vectors and matrices)
WORD Elements; // array dimension
WORD StructMembers; // number of struct members
DWORD StructMemberInfo; // D3DXSHADER_STRUCTMEMBERINFO[Members] offset
} D3DXSHADER_TYPEINFO, *LPD3DXSHADER_TYPEINFO;
typedef struct _D3DXSHADER_STRUCTMEMBERINFO
{
DWORD Name; // LPCSTR offset
DWORD TypeInfo; // D3DXSHADER_TYPEINFO offset
} D3DXSHADER_STRUCTMEMBERINFO, *LPD3DXSHADER_STRUCTMEMBERINFO;
#endif //__D3DX9SHADER_H__

221
third_party/dx9_sdk/include/d3dx9shape.h vendored Normal file
View File

@ -0,0 +1,221 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx9shapes.h
// Content: D3DX simple shapes
//
///////////////////////////////////////////////////////////////////////////
#include "d3dx9.h"
#ifndef __D3DX9SHAPES_H__
#define __D3DX9SHAPES_H__
///////////////////////////////////////////////////////////////////////////
// Functions:
///////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//-------------------------------------------------------------------------
// D3DXCreatePolygon:
// ------------------
// Creates a mesh containing an n-sided polygon. The polygon is centered
// at the origin.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Length Length of each side.
// Sides Number of sides the polygon has. (Must be >= 3)
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreatePolygon(
LPDIRECT3DDEVICE9 pDevice,
FLOAT Length,
UINT Sides,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateBox:
// --------------
// Creates a mesh containing an axis-aligned box. The box is centered at
// the origin.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Width Width of box (along X-axis)
// Height Height of box (along Y-axis)
// Depth Depth of box (along Z-axis)
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateBox(
LPDIRECT3DDEVICE9 pDevice,
FLOAT Width,
FLOAT Height,
FLOAT Depth,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateCylinder:
// -------------------
// Creates a mesh containing a cylinder. The generated cylinder is
// centered at the origin, and its axis is aligned with the Z-axis.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Radius1 Radius at -Z end (should be >= 0.0f)
// Radius2 Radius at +Z end (should be >= 0.0f)
// Length Length of cylinder (along Z-axis)
// Slices Number of slices about the main axis
// Stacks Number of stacks along the main axis
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateCylinder(
LPDIRECT3DDEVICE9 pDevice,
FLOAT Radius1,
FLOAT Radius2,
FLOAT Length,
UINT Slices,
UINT Stacks,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateSphere:
// -----------------
// Creates a mesh containing a sphere. The sphere is centered at the
// origin.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Radius Radius of the sphere (should be >= 0.0f)
// Slices Number of slices about the main axis
// Stacks Number of stacks along the main axis
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateSphere(
LPDIRECT3DDEVICE9 pDevice,
FLOAT Radius,
UINT Slices,
UINT Stacks,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateTorus:
// ----------------
// Creates a mesh containing a torus. The generated torus is centered at
// the origin, and its axis is aligned with the Z-axis.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// InnerRadius Inner radius of the torus (should be >= 0.0f)
// OuterRadius Outer radius of the torue (should be >= 0.0f)
// Sides Number of sides in a cross-section (must be >= 3)
// Rings Number of rings making up the torus (must be >= 3)
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTorus(
LPDIRECT3DDEVICE9 pDevice,
FLOAT InnerRadius,
FLOAT OuterRadius,
UINT Sides,
UINT Rings,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateTeapot:
// -----------------
// Creates a mesh containing a teapot.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTeapot(
LPDIRECT3DDEVICE9 pDevice,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateText:
// ---------------
// Creates a mesh containing the specified text using the font associated
// with the device context.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// hDC Device context, with desired font selected
// pText Text to generate
// Deviation Maximum chordal deviation from true font outlines
// Extrusion Amount to extrude text in -Z direction
// ppMesh The mesh object which will be created
// pGlyphMetrics Address of buffer to receive glyph metric data (or NULL)
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTextA(
LPDIRECT3DDEVICE9 pDevice,
HDC hDC,
LPCSTR pText,
FLOAT Deviation,
FLOAT Extrusion,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency,
LPGLYPHMETRICSFLOAT pGlyphMetrics);
HRESULT WINAPI
D3DXCreateTextW(
LPDIRECT3DDEVICE9 pDevice,
HDC hDC,
LPCWSTR pText,
FLOAT Deviation,
FLOAT Extrusion,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency,
LPGLYPHMETRICSFLOAT pGlyphMetrics);
#ifdef UNICODE
#define D3DXCreateText D3DXCreateTextW
#else
#define D3DXCreateText D3DXCreateTextA
#endif
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DX9SHAPES_H__

1647
third_party/dx9_sdk/include/d3dx9tex.h vendored Normal file

File diff suppressed because it is too large Load Diff

1027
third_party/dx9_sdk/include/d3dxcore.h vendored Normal file

File diff suppressed because it is too large Load Diff

407
third_party/dx9_sdk/include/d3dxerr.h vendored Normal file
View File

@ -0,0 +1,407 @@
//----------------------------------------------------------------------
//
// d3dxerr.h -- 0xC code definitions for the D3DX API
//
// Copyright (c) Microsoft Corp. All rights reserved.
//
//----------------------------------------------------------------------
#ifndef __D3DXERR_H__
#define __D3DXERR_H__
//
//
// Values are 32 bit values layed out as follows:
//
// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
// +---+-+-+-----------------------+-------------------------------+
// |Sev|C|R| Facility | Code |
// +---+-+-+-----------------------+-------------------------------+
//
// where
//
// Sev - is the severity code
//
// 00 - Success
// 01 - Informational
// 10 - Warning
// 11 - Error
//
// C - is the Customer code flag
//
// R - is a reserved bit
//
// Facility - is the facility code
//
// Code - is the facility's status code
//
//
// Define the facility codes
//
#define FACILITY_D3DX 0x877
//
// MessageId: D3DXERR_NOMEMORY
//
// MessageText:
//
// Out of memory.
//
#define D3DXERR_NOMEMORY ((HRESULT)0xC8770BB8L)
//
// MessageId: D3DXERR_NULLPOINTER
//
// MessageText:
//
// A NULL pointer was passed as a parameter.
//
#define D3DXERR_NULLPOINTER ((HRESULT)0xC8770BB9L)
//
// MessageId: D3DXERR_INVALIDD3DXDEVICEINDEX
//
// MessageText:
//
// The Device Index passed in is invalid.
//
#define D3DXERR_INVALIDD3DXDEVICEINDEX ((HRESULT)0xC8770BBAL)
//
// MessageId: D3DXERR_NODIRECTDRAWAVAILABLE
//
// MessageText:
//
// DirectDraw has not been created.
//
#define D3DXERR_NODIRECTDRAWAVAILABLE ((HRESULT)0xC8770BBBL)
//
// MessageId: D3DXERR_NODIRECT3DAVAILABLE
//
// MessageText:
//
// Direct3D has not been created.
//
#define D3DXERR_NODIRECT3DAVAILABLE ((HRESULT)0xC8770BBCL)
//
// MessageId: D3DXERR_NODIRECT3DDEVICEAVAILABLE
//
// MessageText:
//
// Direct3D device has not been created.
//
#define D3DXERR_NODIRECT3DDEVICEAVAILABLE ((HRESULT)0xC8770BBDL)
//
// MessageId: D3DXERR_NOPRIMARYAVAILABLE
//
// MessageText:
//
// Primary surface has not been created.
//
#define D3DXERR_NOPRIMARYAVAILABLE ((HRESULT)0xC8770BBEL)
//
// MessageId: D3DXERR_NOZBUFFERAVAILABLE
//
// MessageText:
//
// Z buffer has not been created.
//
#define D3DXERR_NOZBUFFERAVAILABLE ((HRESULT)0xC8770BBFL)
//
// MessageId: D3DXERR_NOBACKBUFFERAVAILABLE
//
// MessageText:
//
// Backbuffer has not been created.
//
#define D3DXERR_NOBACKBUFFERAVAILABLE ((HRESULT)0xC8770BC0L)
//
// MessageId: D3DXERR_COULDNTUPDATECAPS
//
// MessageText:
//
// Failed to update caps database after changing display mode.
//
#define D3DXERR_COULDNTUPDATECAPS ((HRESULT)0xC8770BC1L)
//
// MessageId: D3DXERR_NOZBUFFER
//
// MessageText:
//
// Could not create Z buffer.
//
#define D3DXERR_NOZBUFFER ((HRESULT)0xC8770BC2L)
//
// MessageId: D3DXERR_INVALIDMODE
//
// MessageText:
//
// Display mode is not valid.
//
#define D3DXERR_INVALIDMODE ((HRESULT)0xC8770BC3L)
//
// MessageId: D3DXERR_INVALIDPARAMETER
//
// MessageText:
//
// One or more of the parameters passed is invalid.
//
#define D3DXERR_INVALIDPARAMETER ((HRESULT)0xC8770BC4L)
//
// MessageId: D3DXERR_INITFAILED
//
// MessageText:
//
// D3DX failed to initialize itself.
//
#define D3DXERR_INITFAILED ((HRESULT)0xC8770BC5L)
//
// MessageId: D3DXERR_STARTUPFAILED
//
// MessageText:
//
// D3DX failed to start up.
//
#define D3DXERR_STARTUPFAILED ((HRESULT)0xC8770BC6L)
//
// MessageId: D3DXERR_D3DXNOTSTARTEDYET
//
// MessageText:
//
// D3DXInitialize() must be called first.
//
#define D3DXERR_D3DXNOTSTARTEDYET ((HRESULT)0xC8770BC7L)
//
// MessageId: D3DXERR_NOTINITIALIZED
//
// MessageText:
//
// D3DX is not initialized yet.
//
#define D3DXERR_NOTINITIALIZED ((HRESULT)0xC8770BC8L)
//
// MessageId: D3DXERR_FAILEDDRAWTEXT
//
// MessageText:
//
// Failed to render text to the surface.
//
#define D3DXERR_FAILEDDRAWTEXT ((HRESULT)0xC8770BC9L)
//
// MessageId: D3DXERR_BADD3DXCONTEXT
//
// MessageText:
//
// Bad D3DX context.
//
#define D3DXERR_BADD3DXCONTEXT ((HRESULT)0xC8770BCAL)
//
// MessageId: D3DXERR_CAPSNOTSUPPORTED
//
// MessageText:
//
// The requested device capabilities are not supported.
//
#define D3DXERR_CAPSNOTSUPPORTED ((HRESULT)0xC8770BCBL)
//
// MessageId: D3DXERR_UNSUPPORTEDFILEFORMAT
//
// MessageText:
//
// The image file format is unrecognized.
//
#define D3DXERR_UNSUPPORTEDFILEFORMAT ((HRESULT)0xC8770BCCL)
//
// MessageId: D3DXERR_IFLERROR
//
// MessageText:
//
// The image file loading library error.
//
#define D3DXERR_IFLERROR ((HRESULT)0xC8770BCDL)
//
// MessageId: D3DXERR_FAILEDGETCAPS
//
// MessageText:
//
// Could not obtain device caps.
//
#define D3DXERR_FAILEDGETCAPS ((HRESULT)0xC8770BCEL)
//
// MessageId: D3DXERR_CANNOTRESIZEFULLSCREEN
//
// MessageText:
//
// Resize does not work for full-screen.
//
#define D3DXERR_CANNOTRESIZEFULLSCREEN ((HRESULT)0xC8770BCFL)
//
// MessageId: D3DXERR_CANNOTRESIZENONWINDOWED
//
// MessageText:
//
// Resize does not work for non-windowed contexts.
//
#define D3DXERR_CANNOTRESIZENONWINDOWED ((HRESULT)0xC8770BD0L)
//
// MessageId: D3DXERR_FRONTBUFFERALREADYEXISTS
//
// MessageText:
//
// Front buffer already exists.
//
#define D3DXERR_FRONTBUFFERALREADYEXISTS ((HRESULT)0xC8770BD1L)
//
// MessageId: D3DXERR_FULLSCREENPRIMARYEXISTS
//
// MessageText:
//
// The app is using the primary in full-screen mode.
//
#define D3DXERR_FULLSCREENPRIMARYEXISTS ((HRESULT)0xC8770BD2L)
//
// MessageId: D3DXERR_GETDCFAILED
//
// MessageText:
//
// Could not get device context.
//
#define D3DXERR_GETDCFAILED ((HRESULT)0xC8770BD3L)
//
// MessageId: D3DXERR_BITBLTFAILED
//
// MessageText:
//
// Could not bitBlt.
//
#define D3DXERR_BITBLTFAILED ((HRESULT)0xC8770BD4L)
//
// MessageId: D3DXERR_NOTEXTURE
//
// MessageText:
//
// There is no surface backing up this texture.
//
#define D3DXERR_NOTEXTURE ((HRESULT)0xC8770BD5L)
//
// MessageId: D3DXERR_MIPLEVELABSENT
//
// MessageText:
//
// There is no such miplevel for this surface.
//
#define D3DXERR_MIPLEVELABSENT ((HRESULT)0xC8770BD6L)
//
// MessageId: D3DXERR_SURFACENOTPALETTED
//
// MessageText:
//
// The surface is not paletted.
//
#define D3DXERR_SURFACENOTPALETTED ((HRESULT)0xC8770BD7L)
//
// MessageId: D3DXERR_ENUMFORMATSFAILED
//
// MessageText:
//
// An error occured while enumerating surface formats.
//
#define D3DXERR_ENUMFORMATSFAILED ((HRESULT)0xC8770BD8L)
//
// MessageId: D3DXERR_COLORDEPTHTOOLOW
//
// MessageText:
//
// D3DX only supports color depths of 16 bit or greater.
//
#define D3DXERR_COLORDEPTHTOOLOW ((HRESULT)0xC8770BD9L)
//
// MessageId: D3DXERR_INVALIDFILEFORMAT
//
// MessageText:
//
// The file format is invalid.
//
#define D3DXERR_INVALIDFILEFORMAT ((HRESULT)0xC8770BDAL)
//
// MessageId: D3DXERR_NOMATCHFOUND
//
// MessageText:
//
// No suitable match found.
//
#define D3DXERR_NOMATCHFOUND ((HRESULT)0xC8770BDBL)
#endif //__D3DXERR_H__

1092
third_party/dx9_sdk/include/d3dxmath.h vendored Normal file

File diff suppressed because it is too large Load Diff

1809
third_party/dx9_sdk/include/d3dxmath.inl vendored Normal file

File diff suppressed because it is too large Load Diff

209
third_party/dx9_sdk/include/d3dxshapes.h vendored Normal file
View File

@ -0,0 +1,209 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dxshapes.h
// Content: D3DX simple shapes
//
///////////////////////////////////////////////////////////////////////////
#ifndef __D3DXSHAPES_H__
#define __D3DXSHAPES_H__
#include <d3d.h>
#include <limits.h>
#include "d3dxerr.h"
typedef struct ID3DXSimpleShape *LPD3DXSIMPLESHAPE;
// {CFCD4602-EB7B-11d2-A440-00A0C90629A8}
DEFINE_GUID( IID_ID3DXSimpleShape,
0xcfcd4602, 0xeb7b, 0x11d2, 0xa4, 0x40, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8 );
///////////////////////////////////////////////////////////////////////////
// Interfaces:
///////////////////////////////////////////////////////////////////////////
//-------------------------------------------------------------------------
// ID3DXSimpleShape interface:
//-------------------------------------------------------------------------
DECLARE_INTERFACE_(ID3DXSimpleShape, IUnknown)
{
// IUnknown methods
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
// ID3DXSimpleShape methods
STDMETHOD_(LPDIRECT3DVERTEXBUFFER7, GetVB)(THIS) PURE;
STDMETHOD_(DWORD, GetIndices)(THIS_ LPWORD *ppIndices) PURE;
STDMETHOD(Draw)(THIS) PURE;
};
///////////////////////////////////////////////////////////////////////////
// Functions:
///////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//-------------------------------------------------------------------------
// D3DXCreatePolygon: Creates an 'n' sided polygon using the device
// ---------------- specified. It returns a vertex buffer that can be used
// for drawing or manipulation by the program later on.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] float sideSize: Length of a side.
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. (Default is 1)
// D3DX_DEFAULT is a valid input.
// [out] IDirect3DVertexBuffer7** ppVB: The output shape interface.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreatePolygon(LPDIRECT3DDEVICE7 pDevice,
float sideSize,
DWORD numSides,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape );
//-------------------------------------------------------------------------
// D3DXCreateBox: Creates a box (cuboid) of given dimensions using the
// ------------ device. It returns a vertex buffer that can
// be used for drawing or manipulation by the program later on.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] float width: Width of the box (along x-axis)
// [in] float height: Height of the box (along y-axis)
// [in] float depth: Depth of the box (along z-axis)
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. Default is 1.
// D3DX_DEFAULT is a valid input here.
// [out] LPD3DXSIMPLESHAPE* ppShape: The output vertex-buffer.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateBox(LPDIRECT3DDEVICE7 pDevice,
float width,
float height,
float depth,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape );
//-------------------------------------------------------------------------
// D3DXCreateCylinder: Creates a cylinder of given dimensions using the
// ----------------- device. It returns a vertex buffer that
// can be used for drawing or manipulation by the program
// later on.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] float baseRadius: Base-radius (default is 1.0f, shd be >= 0.0f)
// [in] float topRadius: Top-radius (default is 1.0f, shd be >= 0.0f)
// [in] float height: Height (default is 1.0f, shd be >= 0.0f)
// [in] DWORD numSlices: Number of slices about the main axis.
// (default is 8) D3DX_DEFAULT is a valid input.
// [in] DWORD numStacks: Number of stacks along the main axis.
// (default is 8) D3DX_DEFAULT is a valid input.
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. Default is 1.
// D3DX_DEFAULT is a valid input here.
// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateCylinder(LPDIRECT3DDEVICE7 pDevice,
float baseRadius,
float topRadius,
float height,
DWORD numSlices,
DWORD numStacks,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape );
//-------------------------------------------------------------------------
// D3DXCreateTorus: Creates a torus of given dimensions using the
// -------------- device specified. It returns a vertex buffer that can
// be used for drawing or manipulation by the program later
// on. It draws a doughnut, centered at (0, 0, 0) whose axis
// is aligned with the z-axis. With the innerRadius used
// as the radius of the cross-section (minor-Radius) and
// the outerRadius used as the radius of the central 'hole'.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] float innerRadius: inner radius (default is 1.0f, shd be >= 0.0f)
// [in] float outerRadius: outer radius (default is 2.0f, shd be >= 0.0f)
// [in] DWORD numSides: Number of sides in the cross-section
// (default is 8). D3DX_DEFAULT is a valid input.
// [in] DWORD numRings: Number of rings making up the torus
// (default is 8) D3DX_DEFAULT is a valid input.
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. Default is 1.
// D3DX_DEFAULT is a valid input here.
// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTorus(LPDIRECT3DDEVICE7 pDevice,
float innerRadius,
float outerRadius,
DWORD numSides,
DWORD numRings,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape );
//-------------------------------------------------------------------------
// D3DXCreateTeapot: Creates a teapot using the device specified.
// ---------------- It returns a vertex buffer that can be used for
// drawing or manipulation by the program later on.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. Default is 1.
// D3DX_DEFAULT is a valid input here.
// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTeapot(LPDIRECT3DDEVICE7 pDevice,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape);
//-------------------------------------------------------------------------
// D3DXCreateSphere: Creates a cylinder of given dimensions using the
// ---------------- device specified.
// It returns a vertex buffer that can be used for
// drawing or manipulation by the program later on.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] float radius: radius (default is 1.0f, shd be >= 0.0f)
// [in] float height: Height (default is 1.0f, shd be >= 0.0f)
// [in] DWORD numSlices: Number of slices about the main axis
// (default is 8) D3DX_DEFAULT is a valid input.
// [in] DWORD numStacks: Number of stacks along the main axis
// (default is 8) D3DX_DEFAULT is a valid input.
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. Default is 1.
// D3DX_DEFAULT is a valid input here.
// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateSphere(LPDIRECT3DDEVICE7 pDevice,
float radius,
DWORD numSlices,
DWORD numStacks,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape);
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DXSHAPES_H__

Some files were not shown because too many files have changed in this diff Show More